0

我需要进行查询,该查询将从某个表中选择所有名称和所有昵称,但仅选择 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%',而不仅仅是这个连接的条目。有人有什么主意吗?

4

3 回答 3

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%')
于 2012-04-18T12:26:39.510 回答
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%')
于 2012-04-18T12:27:26.097 回答
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%')
于 2012-04-18T12:28:06.913 回答