2017-06-12 111 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);