2013-07-26 44 views
2

我想显示与相关列的表。例如,有3个表(部门,dept_emp和员工)。如果我只对dept_no感兴趣,那么我的查询应该返回department和dept_emp表。但是,如果我对dept_no和emp_no感兴趣,结果应该只有dept_emp表。SQL INTERSECT查询

所以我想出了这个查询,但显然有一个语法错误。我可否知道是否有其他选择?

(SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME = 'dept_no') 
INTERSECT 
(SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME = 'empt_no') 
+1

这取决于你的数据库。例如MySql不支持INTERSECT。所以,如果你指定你使用的是什么,它可能有助于回答@Uriil – Uriil

+0

,我明白了。我没有意识到这一点。是的,你是对的,我正在使用MySQL。有没有其他的选择来查询获得相同的结果? –

回答

2

只要你使用MySQL,你可以通过子查询做到这一点:

SELECT DISTINCT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE COLUMN_NAME = 'dept_no' AND TABLE_NAME IN (SELECT TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE COLUMN_NAME = 'empt_no') 
1

尝试:

SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME = 'dept_no' 
INTERSECT 
SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME = 'empt_no' 
+0

+1 - 好的答案。 – Devart

+0

Uril是对的,查询wun工作,因为mysql不支持相交。 –