我对select语句有疑问。
我的表中填充了数据,我使用此查询从表中获取特定数据:
SELECT * FROM company WHERE
(
paid = 'yes' AND
country = '$country'
)
AND
(
categoryid1 = '$subCategory' OR
categoryid2 = '$subCategory' OR
categoryid3 = '$subCategory' OR
categoryid4 = '$subCategory' OR
categoryid5 = '$subCategory' OR
categoryid6 = '$subCategory'
)
ORDER BY title
我的问题是: 当我用数据填充所有6个类别列时,它不会从表中选择任何内容。但是,如果我从1个类别中删除数据,它将选择正确的数据。
任何人都可以帮忙吗?
非常感谢
答案 0 :(得分:2)
为匹配的一系列OR子句添加额外的机会永远不会使你的条件从True转为False - 除非它试图匹配NULL或“”(空字符串)。在这种情况下,有一个空白列将导致它始终匹配,并且在所有列中包含数据将导致它始终失败。
我敢打赌,如果你检查你的代码,$ subCategory没有正确设置,你的OR都在寻找类别“”。