![](/img/trans.png)
[英]Update MySQL table rows where and set clause same values of the column
[英]mysql WHERE CLAUSE to exclude rows based on two different values in same column
我正在使用MySQL數據比較來比較本地和遠程mysql數據庫。
我正在嘗試建立一個簡單的WHERE子句,該子句從比較中排除包含以下值的任何行:
%mm
或%transient%
我使用的WHERE子句似乎不起作用。
'option_name' NOT LIKE '%_transient_%' OR '%mm%'
正在運行的完整查詢是:
SELECT 'option_id', 'option_name', 'option_value', 'autoload'
FROM 'wp_options WHERE 'option_name' NOT LIKE '%_transient_%' OR '%mm%'
並且結果輸出不排除option_name列中具有mm
或_transient_
的行。
需要注意的是,我僅限於使用WHERE子句,而且我無法編輯導致該子句的SELECT子句(因為這都是由軟件生成的)。
沒有可以將LIKE
與多種模式進行比較的形式。
正如@vkp在評論中提到的(我不知道他們為什么不發布答案),您的條件無法滿足您的期望:
WHERE option_name NOT LIKE '%_transient_%' OR '%mm%'
在MySQL中這不是語法錯誤,因為OR
可以使用任何表達式作為操作數。 零值算作false,非零值算作true。 因此,您的條件等同於:
WHERE (option_name NOT LIKE '%_transient_%') OR ('%mm%')
在邏輯上等效於:
WHERE (option_name NOT LIKE '%_transient_%') OR (true)
這對每一行都是真實的,因為將真實值OR
與任何其他表達式一起將得出true。
您的條件應為:
WHERE option_name NOT LIKE '%_transient_%' AND option_name NOT LIKE '%mm%'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.