Относительно простой вопрос, но я новичок в 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.Есть идеи?