我有这个查询。如果徽标为空,或者按钮为空,或者vanitylogo为空,我需要选择行。这似乎可行,但是在同一中间打印多行。如何解决呢?
SELECT fmm.mid,
fmm.name ,
fmn.mnname,
fmm.button,
fmm.logo,
fmm.vanitylogo
FROM X fmm ,
Y fmn
WHERE fmm.`button` = ''
OR fmm.`button` = 'NULL'
OR fmm.`button` = 'None'
OR fmm.`logo` = ''
OR fmm.`logo` = 'NULL'
OR fmm.`logo` = 'None'
OR fmm.`vanitylogo` = ''
OR fmm.`vanitylogo` = 'NULL'
OR fmm.`vanitylogo` IS NULL
AND fmm.mid=fmn.nid
AND fmm.status='active'
AND fmm.xyz_status='active'
最佳答案
您的查询有两个主要问题:
您没有正确包围OR
条件
您在表之间没有连接条件,从而导致“交叉连接”
尝试这个:
SELECT fmm.mid,
fmm.name ,
fmn.mnname,
fmm.button,
fmm.logo,
fmm.vanitylogo
FROM X fmm
JOIN Y fmn ON fmn.some_column = X.some_column -- FIX THIS
WHERE (fmm.`button` in ('', 'NULL', 'None')
OR fmm.`logo` IN ('', 'NULL', 'None')
OR fmm.`vanitylogo` IN ('', 'NULL')
OR fmm.`vanitylogo` IS NULL)
AND fmm.mid=fmn.nid
AND fmm.status='active'
AND fmm.xyz_status='active'
您必须使用相应的列名称填写“ FIX THIS”:
关于OR,我将一些捆绑成IN()条件,并放在了括号中。