所以基本上我有两张桌子:
表1
id| name
1 Test
2 Something
3 More
表2
id| table1_id
1 1
2 1
3 1
4 2
5 2
6 3
现在我需要这样的结果:
name | table2.id
Test 1
2
3
Something 4
5
More 6
所以基本上第一个表中没有重复的条目。所以结果和加入它的结果完全一样,但是没有多次显示名称。这在MySQL中是可能的,还是我应该用PHP过滤它?我知道这在PHP中是可能的,但是我想知道这样的东西在MySQL中是否可以实现,如果可以,我想知道应该寻找什么。我在想一些有明显和/或左或右连接的东西。
最佳答案
所以,你问是否可以使用MySQL,我在评论中回答说可以。
如果你的问题是我如何只用MySQL来实现这一点,这里是:
SELECT
tmp.name,
tbl2.id
FROM
tbl2
LEFT JOIN (
SELECT
tbl2.id AS id,
tbl1.`name` AS name
FROM
tbl2
INNER JOIN tbl1 ON tbl1.id = tbl2.tbl1_id
GROUP BY
tbl2.tbl1_id
) AS tmp ON tbl2.id = tmp.id;
希望这是你想要的。
正如@roberto06所建议的,这个查询返回
NULL
而不是重复的,但是如果您不喜欢NULL
s并且想要一个空字符串,您可以将SELECT tmp.name
改为SELECT IFNULL(tmp.name,'')
关于php - MySQL联接查询,但如果重复则不显示第一个表的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40529287/