SQL-запрос выбрать из всех таблиц, где идентификатор равен

0

Относительно прямой вопрос, но я новичок в SQL-запросах. Я пытаюсь найти во всех таблицах любую запись, которая содержит определенное значение.

Итак, в двух словах, я хочу найти во всей базе данных любой экземпляр, где hContactId равен 200.

Я пробовал следующее:

USE dbname
SELECT *
FROM sys.Tables
WHERE hContacts.hContactId = 200;

Я заканчиваю с

У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB

Я видел несколько действительно сложных запросов, подобных приведенным ниже, которые не работали, но наверняка должен быть способ сделать запрос ко всем таблицам на целое число, верно?

Еще одна вещь, которую я пытался с тем же сообщением об ошибке:

declare  @sql varchar(8000), @tbl varchar(255), @col varchar(255), 
@data  varchar(50)

set @data = '200'

declare cur_tbl cursor for
     select a.name, b.name from sysobjects a, syscolumns b, systypes c where a.id = b.id and a.type = 'U' and c.xtype = b.xtype and c.name in ( 'int' )
open cur_tbl
fetch next from cur_tbl into @tbl, @col
while @@fetch_status = 0
begin
     set @sql = '
                   if exists (select * from [' + @tbl + '] where convert( varchar(255), [' + @col + '] ) = ''' + @data + ''')
                         select tbl=''' + @tbl + ''', col=''' + @col + ''', [' + @col + '], * from [' + @tbl + '] where convert( varchar(255), [' + @col + '] ) = ''' + @data + '''
                   '
     exec(@sql)

     fetch next from cur_tbl into @tbl, @col
end
close cur_tbl
deallocate cur_tbl

Снова просто ищем базовый запрос для всех таблиц, ища те, которые соответствуют hContactId. Есть идеи?

  • 0
    ... для правильного синтаксиса, чтобы использовать рядом ...
  • 0
    Вам нужно перебрать все таблицы. Я бы предложил использовать синтаксис MariaDB / MySQL и системные таблицы, а не синтаксис MS SQL и системные таблицы.
Показать ещё 1 комментарий
Теги:

1 ответ

0

Ну, вы всегда можете использовать союз:

SELECT * FROM Table_name_1
WHERE hContactId = 200;
UNION  
SELECT * FROM Table_name_2 
WHERE hContactId = 200;
UNION  
SELECT * FROM Table_name_3 
WHERE hContactId = 200;'''

Ещё вопросы

Сообщество Overcoder
Наверх
Меню