Войти

Показать полную графическую версию : [решено] Как искать колонки по всей базе sql


r-studio
22-02-2020, 18:58
Подскажите, пожалуйста, чтобы искать нужную колонку по всем таблицам в sql я могу сделать так
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME=N'roadid'
я получаю список таблиц где есть такая колонка

А как сделать тоже самое если мне надо найти все таблицы, где есть 2 колонки, например roadid и UserName
Я стал делать
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME=N'roadid'
and COLUMN_NAME=N'UserName';
но это не работает, потому что как минимум одну таблицу с таким условием я знаю что есть. и даже смотрю на нее.
Так как же искать таблицы, где есть одновременно 2 нужные колонки

Iska
22-02-2020, 19:18
Я стал делать
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME=N'roadid'
and COLUMN_NAME=N'UserName';
но это не работает »
А как это работает — Вы ничего не получаете или получаете перечень всех таблиц, где есть хотя бы одна из «колонок»?

r-studio
23-02-2020, 11:55
Iska, мне запрос возвращает перечень таблиц, например
tab1
tab2
tab100500

Iska
23-02-2020, 12:58
r-studio, это ответ не на тот вопрос, что я задал.

Я полез в WorkBench и посмотрел, как это выглядит. Задавая запрос вышеуказанного вида:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME=N'roadid' and COLUMN_NAME=N'UserName'; »
Вы закономерно получаете ноль строк в ответе. Потому как запрос выглядит как два по определению не пересекающихся кортежа/множества.

Я бы попробовал так:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME IN (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME=N'roadid') AND COLUMN_NAME=N'UserName';

r-studio
23-02-2020, 13:10
Iska, работает




© OSzone.net 2001-2012