一对多关系MySQL-仅获得一个多记录

约书亚·巴克(Joshua Bakker)

我有2张桌子,其中一张桌子如下所示(示例):

tbl1
-------------
id int PK
name string

另一个看起来像:

tbl2
-------------
type int PK FK (tbl1.id)
langid int PK
content string

所以我想要什么:我想将tbl1中的所有行与tbl2中的结果结合在一起。但是我不想要的是为每个langid将结果添加到联接中。因此,如果tbl1包含以下数据:

id: 1, name: test1
id: 2, name: test2

tbl2包含以下数据:

type: 1, langid: 1, content: testcontent
type: 1, langid: 2, content: testcontent2
type: 2, langid: 3, content: testcontent3

我只需要以下数据:

tbl1.id: 1, tbl1.name: test1, tbl2.type: 1, tbl2.langid: 1, tbl2.content: testcontent
tbl1.id: 2, tbl1.name: test2, tbl2.type: 2, tbl2.langid: 3, tbl2.content: testcontent3

因此,它必须使用存在的langid来获得一个结果。希望我能很好地解释它。我尝试了这个:

SELECT * FROM `tbl1` INNER JOIN `tbl2` ON (`tbl1`.`id` = `tbl2`.`type`) WHERE `tbl2`.`langid` = 1

但是有时候,langid 1不存在,而只是该标头的langid 2。我需要从tbl2获得一个结果,并从其中获取tbl1行。

邮编

原始提交(只是得到第一响应...但这不是您想要的...)

SELECT * FROM `tbl1` INNER JOIN `tbl2` ON (`tbl1`.`id` = `tbl2`.`type`) WHERE 1 LIMIT 1 

更新-我认为这就是您想要的。这适用于SQLfiddle

select *
  FROM `tbl1` INNER JOIN `tbl2` 
  ON ( `tbl1`.`id` = `tbl2`.`type`) 
  Group by tbl1.id

回复:

id  name    type    langid  content
1   test1     1       1    content1
2   test2     2       3    content3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章