簡體   English   中英

帶IF語句的SQL Where條件

[英]SQL Where Condition with IF Statement

因此,我試圖編寫一個查詢以提取一些數據,但我有一個需要滿足的條件,而且我似乎無法弄清楚如何實際執行它。 我想要實現的是,如果一個表中的一列不為null,那么我想檢查另一張表,看看其中一個列中是否有特定的值。 因此,我嘗試以偽代碼類型進行此操作

SELECT id, user_name, created_date, transaction_number
FROM TableA
WHERE (IF TableA.response_id IS NULL OR
IF (SELECT type_id from TableB WHERE (type_id NOT IN ('4)) AND (id = TableA.response_id))

因此,我要從這里開始的工作是為那些沒有響應的客戶提取所有交易,但是從那些有響應的客戶那里我仍然想獲取沒有特定代碼關聯的交易。 我不確定是否可以通過這種方式執行此操作,或者不確定是否需要創建一些臨時表然后可以對其進行操作,但是我處於這種情況。

最初,我認為您想從問題的措辭中獲得CASE語句,但我認為您只是在尋找帶有OR語句的OUTER JOIN

SELECT DISTINCT a.id, a.user_name, a.created_date, a.transaction_number
FROM TableA A
    LEFT JOIN TableB B ON A.response_id = B.Id
WHERE A.response_id IS NULL 
    OR B.type_id NOT IN (4)

其中TableA.Response_id為null或(從TableB WHERE中選擇count(1)(type_id NOT IN('4))AND(id = TableA.response_id))= 0

只要您的子查詢在邏輯上是正確的。

好吧,我不是100%肯定會遵循,但是假設您要查看的是表AI中是否有針對特定ID的響應條目,以為您想要這樣的東西。

SELECT a.id, user_name, created_date, transaction_number
FROM TableA a
LEFT JOIN TableB b
ON a.id=b.id
LEFT JOIN TableC c
ON a.id=c.id
WHERE isnull(b.id,c.id) IS NOT NULL
GROUP BY a.id, user_name, created_date, transaction_number

如果不為null,則ISNULL將返回b.id;如果c.id不為null,則返回c.id;否則返回NULL。 這將告訴您TableB或TableC中是否有對a.id的響應。 假設TableB和TableC更像日志。 如果您說這些表肯定有一個a.id條目,那么只需將b.id和c.id分別替換為b。[response_column]和c。[response_column]就可以了。

暫無
暫無

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

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