[英]output with condition based sub query in mysql
以下是我的查詢:
從表1中選擇c1,c2,c3,c4,c5,其中c1 = 0 //條件1
AND c2 =“ abc” //條件2
AND c3 =“ xxx” //條件3
AND c4 = 5 //條件4
在這里我們知道,條件2將應用於條件1給出的結果數據,條件3將應用於條件2和1給出的結果數據,類似地條件4將應用於...
我想要查詢,如果兩者之間的任何條件失敗,它將進一步執行查詢。
意味着如果條件3不給出結果(或結果集為空),那么我的條件4將應用於空結果集,那么最終輸出將為空,但是我想如果條件3不給出結果(或結果集為空),那么條件4 “應該應用”到條件2和1返回的結果集。
由於性能問題,在這里我無法更改條件順序。
請引導我查詢。
嘗試這個
select c1, c2, c3, c4, c5 from table1 where (c1 =0) or (c2="abc") or (c3="xxx") or (c4 = 5)
據我所知,您希望條件3是可選的。 可以做到,但很難成為有效的解決方案:
Select c1, c2, c3, c4, c5
From table1
Where c1 = 0
AND c2 = "abc"
AND (c3 = "xxx"
OR NOT Exists (Select '*' From table1 Where c1 = 0 AND c2 = "abc" AND c3 = "xxx")
)
AND c4 = 5
更好的方法可能是在條件1和2上使用過濾的臨時表,並將進一步的邏輯應用於此數據子集。
我有一個簡單的解決方案,它在我的場景中有效。 而且,我能夠減少對大數據執行查詢的時間。 毫無疑問,將執行兩個查詢,但我找到了這種適當的解決方案。
我使用了簡單的聯合查詢。
從表1中選擇c1,c2,c3,c4,c5,其中c1 = 0 //條件1
AND c2 =“ abc” //條件2
AND c3 =“ xxx” //條件3
AND c4 = 5 //條件4
聯盟
從表1中選擇c1,c2,c3,c4,c5,其中c1 = 0 //條件1
AND c2 =“ abc” //條件2
AND c4 = 5 //條件4
如果其他人有更准確和適當的解決方案。 請張貼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.