簡體   English   中英

如何查找包含columnA和columnB的所有表

[英]How to find all tables that contain columnA and columnB

我想實現以下目標:

SELECT DISTINCT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE 'columnA'
AND COLUMN_NAME LIKE 'columnB';

但是此特定查詢將返回0個巧合。

information_schema.columns每一行都代表一列-不能同時是columnAcolumnB 一種方法是計算表中此類列的數量,並檢查返回兩個結果的列:

SELECT   table_name
FROM     information_schema.columns
WHERE    column_name IN ('COLUMNA', 'COLUMNB')
GROUP BY table_name
HAVING   COUNT(*) = 2

您應該使用OR而不是and ..

SELECT DISTINCT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE 'columnA'
OR COLUMN_NAME LIKE 'columnB';

同一行中的列不可能包含“ columnA”和“ columnB”

但是,如果您同時需要表名,則可以使用內部聯接

SELECT DISTINCT C1.TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS C1
INNER JOIN (
  SELECT DISTINCT TABLE_NAME 
   FROM INFORMATION_SCHEMA.COLUMNS 
   WHERE COLUMN_NAME LIKE 'columnB'
) C2 ON C1.TABLE_NAME = C2.TABLE_NAME
WHERE C2.COLUMN_NAME LIKE 'columnA'

暫無
暫無

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

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