簡體   English   中英

MySQL查詢忽略和where子句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM