簡體   English   中英

選擇具有非空值列的記錄

[英]Select a record with non-null value columns

我陷入了這個問題。 如果我有這樣的表:

----------------------------------------
ID |  field1 | field2 | field3| field4 |
----------------------------------------
1  |   1     |   0    |    1  |  0     |
----------------------------------------
2  |   0     |   1    |    0  |  1     |
----------------------------------------

我想編寫一個查詢,選擇僅包含等於1列的記錄,例如1。其中ID = 1

 ---------------------
ID |  field1 | field3 
----------------------
1  |   1     |   1   

2.其中ID = 2

 ---------------------
ID |  field2 | field4 
----------------------
2  |   1     |   1   

你們能給我建議還是建議,如何做?

非常感謝您抽出寶貴時間閱讀我的問題。

不,SQL不會這樣做,有條件地在運行時返回列。

在解析和准備SQL語句時確定要返回的列集。 它不能在運行時動態更改。

為了獲得如圖所示的結果,我們將需要兩個不同的查詢

SELECT t.id, t.field1, t.field3
  FROM mytable t 
 WHERE ...

SELECT t.id, t.field2, t.field4
  FROM mytable t 
 WHERE ...

我們可以為SELECT列表中的表達式提供別名,但同樣,這些別名必須在SQL文本中指定; 這些在執行時不能更改。

 SELECT t.id, 1 AS field2, 1 AS field4 
   FROM mytable t 
  WHERE ...

但是我們仍然需要不同的SQL文本來返回field1和field3。


似乎存在可能填充的字段1..4的2 ^ 4(1 + 4 + 6 + 4 + 1)個組合。 總共16個可能的SELECT列表。

我們可以運行一個預查詢,以找出應該返回哪個fieldN,並使用該查詢的結果來制定第二個查詢的文本。

但是這樣做似乎並不必要。

您必須使用WHERE條件來選擇值。 考慮表名稱為Table1。

SELECT * FROM Table1 WHERE ID = 1

如果要從多個ID中選擇,可以使用IN子句。

SELECT * FROM Table1 WHERE ID IN (1,2)

如果只需要Field1,Field3,則只需在SELECT查詢中提及它們即可。 您不需要*,它對應於所有字段。

SELECT Field1, Field3 FROM Table1 WHERE ID = 1

暫無
暫無

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

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