mysql-从2个表中选择SQL有限制
作者:互联网
基本上,我有两个表:管理表和图片.
我需要一个包含管理表中所有属性的列表.如果存在图片,则列表仅需显示第一张图片(seq = 1).
我的问题:列表不显示没有图片的属性.我该如何解决?
我有以下表格:
人
propid | city | lang | ...
1 Mol NL
2 Olen NL
3 Geel NL
4 Ham FR
技术
propid | lang | seq | filename
1 NL 1 file11
1 FR 1 file12
1 NL 2 file13
1 FR 2 file14
1 NL 3 file15
1 FR 3 file16
3 NL 22 file17
3 FR 22 file18
3 NL 23 file19
3 FR 23 file20
3 NL 24 file21
3 FR 24 file22
SELECT m.propid, m.city, p.filename
FROM tblMan as m
INNER JOIN tblProp as p ON m.propid = p.propid
WHERE m.lang = 'NL' AND p.lang = 'NL' AND p.picture_index = '1'
结果是:
propid | city | filename
1 Mol file11
3 Geel file17
他没有得到propid 2(奥伦),因为没有图像!
我想要结果:
propid | city | filename
1 Mol file11
2 Olen (Null or 0 or...)
3 Geel file17
我尝试了子查询,联合,合并…(@ _ @),但没有结果.
有人对我应该使用哪种SQL语句有想法吗?
感谢您的帮助!
解决方法:
使用LEFT JOIN,因为您想在表tblMan上显示与您在WHERE子句上的条件匹配的任何记录,并在表ON子句上移动表tblProp的某些过滤条件
SELECT m.propid,
m.city,
p.filename
FROM tblMan as m
LEFT JOIN tblProp as p
ON m.propid = p.propid
AND p.lang = 'NL'
AND p.picture_index = '1'
WHERE m.lang = 'NL'
标签:join,select,left-join,sql,mysql 来源: https://codeday.me/bug/20191122/2059484.html