簡體   English   中英

MySQL子查詢的結果不正確

[英]Inaccurate results with MySQL Subquery

這是我的PHP腳本創建的查詢。 查詢成功執行,沒有任何錯誤,但結果並不理想。 我希望此查詢結果中的行包含所有三個關鍵字(3D,design,PAG)。 但是,即使找到一個關鍵字,它現在也會返回結果。 如何修改查詢?

SELECT ID
FROM  `catiascripts` 
WHERE  `ID` LIKE  '%3D%'
OR  `ScriptName` LIKE  '%3D%'
OR  `ScriptApplication` LIKE  '%3D%'
OR  `ScriptDescription` LIKE  '%3D%'
OR  `Customer` LIKE  '%3D%'
AND ID
IN (

SELECT ID
FROM  `catiascripts` 
WHERE  `ID` LIKE  '%design%'
OR  `ScriptName` LIKE  '%design%'
OR  `ScriptApplication` LIKE  '%design%'
OR  `ScriptDescription` LIKE  '%design%'
OR  `Customer` LIKE  '%design%'
)
AND ID
IN (

SELECT ID
FROM  `catiascripts` 
WHERE  `ID` LIKE  '%PAG%'
OR  `ScriptName` LIKE  '%PAG%'
OR  `ScriptApplication` LIKE  '%PAG%'
OR  `ScriptDescription` LIKE  '%PAG%'
OR  `Customer` LIKE  '%PAG%'
)
LIMIT 0 , 30

您在and/or表達式上需要使用方括號。 您違反了MySQL的操作順序,因此必須使用適當的()強制執行自己的操作。

and具有比or更高的優先級,因此您的查詢:

SELECT   p OR q OR r AND x OR y OR z ...

被執行為

SELECT p OR q OR (r AND x) OR y OR Z

你要

SELECT (p OR q OR r) AND (x OR y OR Z) AND (...)

相關文檔: https : //dev.mysql.com/doc/refman/5.0/en/operator-precedence.html

SELECT ID
FROM `catiascripts` 
WHERE (
       `ID` LIKE '%3D%'
    OR `ScriptName` LIKE '%3D%'
    OR `ScriptApplication` LIKE '%3D%'
    OR `ScriptDescription` LIKE '%3D%'
    OR `Customer` LIKE '%3D%'
)
AND (
       `ID` LIKE '%design%'
    OR `ScriptName` LIKE '%design%'
    OR `ScriptApplication` LIKE '%design%'
    OR `ScriptDescription` LIKE '%design%'
    OR `Customer` LIKE '%design%'
)
AND (
       `ID` LIKE '%PAG%'
    OR `ScriptName` LIKE '%PAG%'
    OR `ScriptApplication` LIKE '%PAG%'
    OR `ScriptDescription` LIKE '%PAG%'
    OR `Customer` LIKE '%PAG%'
)
LIMIT 0 , 30

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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