簡體   English   中英

MySQL查詢不符合條件

[英]Mysql query doesn't follow condition

因此,我有以下mysql查詢,該查詢有效,但方法不正確:

SELECT *
FROM (`CriteriaItems`)
INNER JOIN `Address` 
  ON `Address`.`address_id` = `CriteriaItems`.`address_id`
WHERE `criteria_id` = '2'
  AND `status` = 'published'
  AND `mls_id` LIKE '%123%'
  OR `Address`.`address` LIKE '%123%'
LIMIT 10

問題是我看到它返回的結果也具有“ status” =“ deleted”,這就是因為“ Address” . 如果我刪除了此地址,則LIKE '%123%' ,但是我需要它。

因此它也想在地址表中進行搜索,但僅基於CriteriaItems`.`address_id

這是因為AND運算符的優先級比OR更高,現在您的查詢像這樣工作。

WHERE `criteria_id` = '2' 
AND (`status` = 'published' AND `mls_id` LIKE '%123%') 
OR `Address`.`address` LIKE '%123%' LIMIT 10

可以在這里找到更多信息

因此,您需要使用括號正確地應用條件

WHERE `criteria_id` = '2' 
AND `status` = 'published' AND 
(`mls_id` LIKE '%123%' OR `Address`.`address` LIKE '%123%')
LIMIT 10

您需要使用方括號將OR換行:

SELECT * 
FROM `CriteriaItems`
JOIN `Address` 
  ON `Address`.`address_id` = `CriteriaItems`.`address_id` 
WHERE `criteria_id` = '2' 
  AND `status` = 'published' 
  AND (`mls_id` LIKE '%123%' OR `Address`.`address` LIKE '%123%')
LIMIT 10;

還考慮使用ORDER BY獲得穩定的結果。

簡單的布爾邏輯:

p1 AND p2 AND p3 OR p4 is true <=> (p1 AND p2 AND p3) is true OR p4 is true

我想你要:

p1 AND p2 AND (p3 OR p4)

暫無
暫無

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

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