我想知道是否有人可以帮忙。
请看下面:
SELECT id,name FROM words;
ID、姓名
1,仍然
2、闪闪发光
3、汽水
SELECT * from translation;
words_id、lang_id、翻译
1, 1, A仍然
1, 2, B仍然
2, 1, 闪闪发光
我需要如下结果:
id、名称、lang_id、翻译
1,静止,1,静止
2,闪闪发光,1,AS闪闪发光
3、泡沫、NULL、NULL
我尝试过的查询
SELECT id,name,lang_id,translation FROM words LEFT JOIN translation ON words_id=id AND lang_id=1;
http://sqlfiddle.com/#!9/f544b/3
非常感谢
最佳答案
您的条件lang_id=1
将您的LEFT JOIN
转变为INNER JOIN
。原因是当条件不满足时(即translation
表中没有条目),它不会显示它。如果您想显示左表中的所有内容,请删除条件 lang_id=1
。
SELECT id,name,lang_id,translation
FROM words
LEFT JOIN translation ON words_id=id
如果需要条件,可以放在子查询中。
SELECT id,name,lang_id,translation
FROM words w
LEFT JOIN (
SELECT *
FROM translation
WHERE lang_id = 1
) t ON t.word_id = w.id
关于MySQL Join 需要显示 LEFT 表中的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45177508/