我有两个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
) ;第一个查询选择具有给定参数的行,如关键字和postalcode等,但我没有得到想要的结果。好像邮编的事完全被忽略了。
第二个查询应该计算它,这样我就可以在PHP中分页结果(但我不想计算PHP)
第一个查询的解决方案:我可以使用拥有而不是和。但是我也需要用计数查询来做。数一数,不一起工作,在这篇文章里。
你有什么提示或解决办法吗?
发布于 2016-04-30 10:46:09
您的第一个问题是OR和AND的结合造成的。
... WHERE ... OR ... AND ...在这里,AND子句可能不会执行您想要的/预期的操作,因为如果满足任何OR条件,条件就会返回OR。
你可能想:
... WHERE (... OR ...) AND ...https://stackoverflow.com/questions/36953846
复制相似问题