[英]MySQL - COUNT and MAX in same query. MAX ignoring WHERE clause
[英]Mysql Query ignoring and where clause
我有一個簡單的mysql查詢,如下所示。
SELECT `om_user`.`id` , `om_user`.`username` , `om_user`.`firstName` , `om_user`.`lastName` , `om_user`.`role` , `om_user`.`email` , `om_user`.`status`
FROM `om_user`
WHERE (
id LIKE 'admin%'
)
OR (
username LIKE 'admin%'
)
OR (
PASSWORD LIKE 'admin%'
)
OR (
salt LIKE 'admin%'
)
OR (
role LIKE 'admin%'
)
OR (
firstName LIKE 'admin%'
)
OR (
lastName LIKE 'admin%'
)
OR (
addressLine1 LIKE 'admin%'
)
OR (
addressLine2 LIKE 'admin%'
)
OR (
addressLine3 LIKE 'admin%'
)
OR (
city LIKE 'admin%'
)
OR (
county LIKE 'admin%'
)
OR (
postcode LIKE 'admin%'
)
OR (
country LIKE 'admin%'
)
OR (
email LIKE 'admin%'
)
OR (
contactNo LIKE 'admin%'
)
OR (
avatar LIKE 'admin%'
)
OR (
STATUS LIKE 'admin%'
)
OR (
passwordRequestStatus LIKE 'admin%'
)
OR (
passwordResetCount LIKE 'admin%'
)
OR (
passwordResetSalt LIKE 'admin%'
)
OR (
passwordResetTime LIKE 'admin%'
)
OR (
createdOn LIKE 'admin%'
)
OR (
createdBy LIKE 'admin%'
)
OR (
lastUpdateOn LIKE 'admin%'
)
OR (
lastUpdateBy LIKE 'admin%'
)
OR (
active LIKE 'admin%'
)
AND (
active =1
)
ORDER BY `id` DESC
LIMIT 0 , 30
但是由於某種原因,它忽略了active=1
條件。 它仍然會顯示它們,而不是忽略active
列的值為0的記錄。
誰能幫我這個忙嗎?
提前致謝。
進行了重寫,以將所有OR放在單個括號內的語句中,並刪除每個OR子句周圍多余的括號:
SELECT
`om_user`.`id`,
`om_user`.`username`,
`om_user`.`firstName`,
`om_user`.`lastName`,
`om_user`.`role`,
`om_user`.`email`,
`om_user`.`status`
FROM `om_user`
WHERE
(
id LIKE 'admin%'
OR username LIKE 'admin%'
OR PASSWORD LIKE 'admin%'
OR salt LIKE 'admin%'
OR ROLE LIKE 'admin%'
OR firstName LIKE 'admin%'
OR lastName LIKE 'admin%'
OR addressLine1 LIKE 'admin%'
OR addressLine2 LIKE 'admin%'
OR addressLine3 LIKE 'admin%'
OR city LIKE 'admin%'
OR county LIKE 'admin%'
OR postcode LIKE 'admin%'
OR country LIKE 'admin%'
OR email LIKE 'admin%'
OR contactNo LIKE 'admin%'
OR avatar LIKE 'admin%'
OR STATUS LIKE 'admin%'
OR passwordRequestStatus LIKE 'admin%'
OR passwordResetCount LIKE 'admin%'
OR passwordResetSalt LIKE 'admin%'
OR passwordResetTime LIKE 'admin%'
OR createdOn LIKE 'admin%'
OR createdBy LIKE 'admin%'
OR lastUpdateOn LIKE 'admin%'
OR lastUpdateBy LIKE 'admin%'
OR active LIKE 'admin%'
)
AND active = 1
ORDER BY
`id` DESC LIMIT 0,
30
這將測試所有OR條件。 如果其中任何一個為TRUE
並且active = 1
則它將返回記錄。
還應提及OR active like 'admin%'
是多余的。 它和active=1
不能同時為true。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.