我有2个SQL查询,我可能使用不正确:
SELECT
`contract_id`,
`contract_title`,
`contract_description`,
`contract_postalcode`,
FROM
`gmw_contracts`
WHERE contract_title COLLATE UTF8_GENERAL_CI REGEXP "test"
OR contract_description COLLATE UTF8_GENERAL_CI REGEXP "test"
AND contract_postalcode IN (
53111,53113,53129,53175,53225,53227,53229,53757
) ;
SELECT
COUNT(`contract_postalcode`)
FROM
`gmw_contracts`
WHERE `contract_title` COLLATE UTF8_GENERAL_CI REGEXP "test"
OR `contract_description` COLLATE UTF8_GENERAL_CI REGEXP "test"
AND `contract_postalcode` IN (
53111,53113,53129,53175,53225,53227,53229,53757
) ;
第一个查询选择具有给定参数的行,如关键字和邮政编码等,但我没有得到所需的结果。好像邮政编码的东西完全被忽略了。
第二个查询应该计算它,这样我就可以在PHP中对结果进行分页(但我不想算PHP)
第一个查询的解决方案:我可以使用HAVING代替AND。但我也需要使用计数查询。 COUNT和HAVING在这个例子中没有合作。
你有任何提示或解决方案吗?
答案 0 :(得分:2)
您的第一个问题是由OR
和AND
:
... WHERE ... OR ... AND ...
如果满足任何AND
条件,true
子句可能无法执行您想要/期望的条件,因为条件会返回OR
。
你可能想要:
... WHERE (... OR ...) AND ...