簡體   English   中英

在where子句中如何獲得多個條件

[英]How to get multiple conditions in case in where clause

我想在表的某些字段上運行查詢,但是我不明白該怎么做。 我的條件是,首先我需要檢查col1的值,如果它是'W',那么我需要檢查colA在('1','2')中的值,如果它不是'W',那么我需要檢查值('1','2')中的colB 僅根據col1的值,此檢查條件('1','2')應用於colA和colB。

我嘗試使用它,但是顯然這是不正確的。

SELECT * FROM tbl
WHERE CASE WHEN col1= 'W' THEN (colA IN ('1','2')) ELSE (colB IN ('1','2')) END

因此,如何在不使用工會等的情況下通過單個查詢進行操作。

您不需要CASE ,只需將所有布爾邏輯放在一個表達式中即可。

SELECT *
FROM T
WHERE
    (Col1 = 'W' AND ColA IN ('1', '2'))
    OR
    (Col1 <> 'W' AND ColB IN ('1', '2'))
;

在此處輸入圖片說明 SQL Server-2014:使用CASE根據條件選擇要在WHERE子句中使用的列

SELECT * FROM tab1 
WHERE 
    (CASE WHEN col1= 'W' THEN colA ELSE colB END) in ('1', '2');

在SqlServer-2014上測試 附加圖片

MySql:使用IF()函數根據條件選擇要在WHERE子句中使用的列

SELECT * FROM tab1 
WHERE 
    IF(col1='W', colA, colB) in ('1', '2');

暫無
暫無

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

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