在我的表personal中,我想加入表languages和payment
SELECT GROUP_CONCAT(DISTINCT languages.language) AS languages, personal.city, payment.before
FROM personal
INNER JOIN languages ON languages.uid = personal.uid
INNER JOIN payment ON payment.uid = personal.uid
WHERE personal.uid = 36返回我的查询如下:
| languages | city | before |
|-------------|:--------------:|--------:|
| NULL | NULL | NULL |这是因为我的表payment中没有记录。有没有办法使我的代码的第4行是可选的?因此,如果payment.uid = personal.uid是假的,结果应该如下所示:
| languages | city | before |
|-------------|:--------------:|--------:|
| English | Chicago | NULL |发布于 2019-09-26 20:29:45
使用LEFT JOIN,这样就可以得到一行:
SELECT GROUP_CONCAT(DISTINCT l.language) AS languages, p.city, pa.before
FROM personal p LEFT JOIN
languages l
ON l.uid = p.uid LEFT JOIN
payment pa
ON pa.uid = p.uid
WHERE p.uid = 36
GROUP BY p.city, pa.before;备注:
SELECT中没有包含在GROUP BY中的列。这是错误的SQL --而且在最近版本的MySQL中不允许使用(使用默认设置)。学习如何正确地构造GROUP BY查询。如果没有与p.uid = 36匹配的行,则https://stackoverflow.com/questions/58124308
复制相似问题