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