我有两个表,如下所示:
table 一
teamid teamname description
1 x abcd
2 y dcba
3 z sadf
表_二
stageid teamid responses score
1 1 r1 20
1 2 r2 30
2 1 r4 20
2 2 r5 20
2 3 r6 20
我正在尝试根据我拥有的 stageid
编号加入上述两个表。所以,我尝试了以下方法:
SELECT t1.teamid, t1.teamname, t2.responses, t2.score
FROM table_one as t1
JOIN table_two as t2 ON t1.teamid = t2.teamid
WHERE stageid = 1
这给了我以下结果(我尝试了左、右、内、外连接的所有组合):
teamid teamname responses score
1 x r1 20
2 y r2 30
预期结果表
teamid teamname responses score
1 x r1 20
2 y r2 30
3 z NULL 0
正如您在上面预期的表格中看到的,我想要 table_one
和 table_two
的所有行,如果数据不存在,我需要 NULL
或 0
作为值。
如何做到这一点?
最佳答案
试试这个:
SELECT t1.teamid, t1.teamname, t2.responses, t2.score
FROM table_one as t1
LEFT JOIN table_two as t2 ON t1.teamid = t2.teamid
WHERE stageid = 1 OR stageid IS NULL
默认情况下,当您使用左连接时,没有任何要连接的字段将包含 NULL,因此您必须添加 NULL,而不仅仅是一个特定的 stageid。
或者正如其他人提到的那样,您可以像这样设置 stageid:
SELECT t1.teamid, t1.teamname, t2.responses, t2.score
FROM table_one as t1
LEFT JOIN table_two as t2 ON t1.teamid = t2.teamid AND stageid = 1
WHERE 1
在此查询中,您使用连接的 ON 标记来设置 stageid,您会得到相同的结果。 (WHERE 1
不是必需的)
关于php - SQL 结果应显示所有表一数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36031823/