簡體   English   中英

在mysql中基於條件的子查詢輸出

[英]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.

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