查询有三个条件

时间:2012-04-18 12:22:58

标签: mysql

我需要进行查询,从某些表中选择所有名称和所有昵称,但只有id在某个数组中。这是查询:

SELECT n. * FROM nikovi n 
INNER JOIN sajt_nikovi s ON n.id = s.nik
WHERE s.sajt = '50' and     n.nadimak like '%ana%' or n.ime like '%ana%'

它找到了表中的所有条目,其中n.ime像'%ana%',而不仅仅是这个连接的条目。有没有人有任何想法?

3 个答案:

答案 0 :(得分:4)

AND比OR更难绑定,这意味着它会评估类似的东西

WHERE (s.sajt = '50' and n.nadimak like '%ana%') or n.ime like '%ana%'

如果您的意思是其他内容,则需要添加括号以使数据库清楚。在这种情况下,您需要将其更改为;

WHERE s.sajt = '50' and (n.nadimak like '%ana%' or n.ime like '%ana%')

答案 1 :(得分:1)

将您的OR

分组
SELECT n. * 
FROM nikovi n 
INNER JOIN sajt_nikovi s 
ON n.id = s.nik 
WHERE s.sajt = '50' 
AND (n.nadimak LIKE '%ana%' OR n.ime LIKE '%ana%')

答案 2 :(得分:0)

当您混合AND和OR

时,始终使用括号
SELECT n. * FROM nikovi n INNER JOIN sajt_nikovi s ON n.id = s.nik WHERE s.sajt = '50' AND (n.nadimak LIKE '%ana%' OR n.ime LIKE '%ana%')