我有以下三种表格。
C 1 2 3 4 B 1 2 3 4 5 A B C 1 1 1 2 1 2 3 1 3 4 1 4 5 2 1 6 2 2 7 3 1 8 4 1 9 5 1
想要显示没有相应“C”的所有“B”的列表。例如:
----------- |2|3,4 | |3|2,3,4,5| |4|2,3,4,5| |5|2,3,4,5| -----------
我对sql没有多少经验。我会很高兴得到任何帮助或提示。
答案 0 :(得分:1)
未经测试,但我认为以下内容应该有效。
SELECT b.B,
GROUP_CONCAT(c.C) AS C
FROM tableB b
CROSS JOIN tableC c
LEFT JOIN tableABC abc ON abc.B = b.B
AND c.C = abc.C
WHERE abc.B IS NULL
GROUP BY b.B
编辑虽然奇怪it appears,但是MySQL已将CROSS JOIN
重新定义为与INNER JOIN
相同,因此您可能需要实现CROSS JOIN
使用tableB b, tableC c
代替tableB b CROSS JOIN tableC c
答案 1 :(得分:0)
您可能正在寻找以下内容: (假设表号是名为'id'的字段),A表是(id,b_id,c_id)
虽然更多信息会有所帮助,但这可能会为您提供一些信息
SELECT B.id, group_concat(A.id)
FROM A
LEFT JOIN B on A.b_id = B.id
LEFT JOIN C on A.c_id = C.id
WHERE
A.c_id IS NULL
GROUP BY B.id