mysql SQL查询从ID等于的所有表中选择

kwvwclae  于 2023-08-02  发布在  Mysql
关注(0)|答案(1)|浏览(145)

相对简单的问题,但我是一个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匹配的表。有什么想法吗

wi3ka0sx

wi3ka0sx1#

你总是可以使用一个union:

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;

字符串

相关问题