Mysql SQL交叉查询
我想显示包含相关列的表。例如,有3个表(department、dept_emp和employees)。如果我只对dept\u no感兴趣,我的查询应该返回department和dept\u emp表。但是,如果我对dept_no和emp_no感兴趣,那么结果应该是dept_emp table 所以我提出了这个查询,但显然有语法错误。我可以知道还有其他的选择吗Mysql SQL交叉查询,mysql,sql,Mysql,Sql,我想显示包含相关列的表。例如,有3个表(department、dept_emp和employees)。如果我只对dept\u no感兴趣,我的查询应该返回department和dept\u emp表。但是,如果我对dept_no和emp_no感兴趣,那么结果应该是dept_emp table 所以我提出了这个查询,但显然有语法错误。我可以知道还有其他的选择吗 (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAM
(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')
尝试:
只要您使用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')
这取决于你的数据库。例如,MySql不支持INTERSECT。因此,如果您指定使用什么,它可能有助于answer@Uriil,我明白了。我不知道。是的,你是对的,我正在使用mysql。除了查询,还有其他方法可以得到相同的结果吗?Uril是对的,因为mysql不支持intersect,所以查询无法工作。
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')