2017-06-12 104 views
0

我有一個有趣的SQL查詢。加入MySQL SELECT語句

我有兩個表;稱爲「數據」和「DICT」。

數據表中包含列標題。

DICT表包含(作爲行中的數據)DATA表的列標題。

IOW:

數據已列標題:

  • 代碼
  • 說明
  • DR
  • CR

DICT具有用於

  • 代碼
  • 說明

使用MySQL的SELECT語句,我可以:

SELECT column_name from information_schema.COLUMNS WHERE (table_name = "DATA"); 

返回的列名。

現在我想實現的是一個SELECT語句(帶有必要的JOIN)來返回DICT表中排除的行(作爲行)。

所以,每例如:

我需要適當的SELECT語句只返回一個事實,即 DR和CR未在DICT錶行。

相信我,我已經嘗試了許多邏輯組合,並且由於「WHERE(table_name =」DATA「)」部分,我似乎可能會遇到問題。

謝謝

+1

顯示您所期望的輸出,並從兩個表中的一些樣本數據的例子。在你的問題中,你從兩個表中顯示了一些東西,但是不清楚它們是列名還是數據值。請澄清 –

+0

DATA:只有感興趣的cols(information_schema.columns在(表名=「DATA」) DICT具有用於一些DATA的COLS的ROWS條目列名 實施例: 構造數據的是:從INFORMATION_SCHEMA SELECT列名。COLUMNS WHERE(table_name =「DATA」); 代碼 說明 DR CR 4行集 行在DICT是: 代碼 說明 DR 3行中集 聲明應該僅返回CR –

+0

請編輯您的問題,而不是在添加註釋信息。 –

回答

0

正如Sloan Thrasher所說,一個例子會有所幫助。這就是說,這是你在追求什麼?

SELECT DISTINCT is1.column_name 
FROM information_schema.COLUMNS is1 
LEFT JOIN DICT ON is1.table_schema = 'YourSchema' AND is1.table_name = "DATA" AND is1.column_name = DICT.column_name 
WHERE DICT.column_name IS NULL 
; 
+0

是的幾乎 - 但它不適合我。 :( –

+0

我將使用Python列表提供結果。感謝您的輸入。 –

0

SELECT列名,從dict.Item LEFT INFORMATION_SCHEMA.COLUMNS JOIN字典ON dict.Item =列名WHERE(TABLE_NAME = '數據')和(dict.Item IS NULL);