MYSQL';在';和';COUNT';问题


MYSQL 'IN' and 'COUNT' issues

我有两个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)

第一个查询的解决方案:我可以使用HAVING而不是AND。但我也需要处理计数查询。COUNT和HAVING在这次考试中不合作。

你有什么建议或解决方案吗?

您的第一个问题是由ORAND:的组合引起的

... WHERE ... OR ... AND ...

这里的AND子句可能不会执行您想要/期望的操作,因为如果满足任何OR条件,则条件将返回true

你可能想要:

... WHERE (... OR ...) AND ...