所以基本上我有两张桌子:
表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而不是重复的,但是如果您不喜欢NULLs并且想要一个空字符串,您可以将SELECT tmp.name改为SELECT IFNULL(tmp.name,'')

关于php - MySQL联接查询,但如果重复则不显示第一个表的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40529287/

10-12 00:02
查看更多