簡體   English   中英

SQL-從表中選擇列,其中另一個表的列值等於列名列表

[英]SQL - Select Columns from table where another table column value equals column name list

見過很多關於基於值解析數據的類似文章,但我所想的都不是我想從一個包含另一個表的列名的表中獲取結果列。 例如:

 Select [col1], [col2]
 from Table1
 where (select changes as (col#)
        from table2)

col#是我想要從Table1中獲得的列名的列表。 表2更改列是用逗號分隔的列表。 我想找到一種方法,能夠從Table2列表中的Table1中獲取每一列。 任何幫助是極大的贊賞。

您必須即時創建查詢。 您可以通過以下方式執行此操作:

  1. 首先,將來自changes列的數據提取到調用的應用程序中,然后從該數據中組裝一個SQL查詢字符串並執行它,或者
  2. 在存儲過程中創建動態語句並將其EXEC (或與RDBMS等效的任何語句)。

但是請注意,如果changes的數據曾經來自用戶輸入,那么您將遭受changes的傷害。

如果您可以控制架構,建議不要使用這種存儲數據的方式。 通常,用逗號分隔的列表很笨拙,並且從根本上違背了數據庫的設計意圖。 在普通查詢中,使用可更改的每一列具有一個布爾值(id, col1_changed, col2_changed)或每個更改的列具有一行(id, changed_col_name)的更改表結構會容易得多。

暫無
暫無

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

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