我试图在多个地方搜索几天,但此脚本未成功。
我需要在数据库的所有表的同一记录中搜索String(NVarChar)
和Number(Int)
。
在下面的示例中,我需要找到同时存在两个条件的表和字段。
例如,找到AAA字符串,但前提是存在990号字段。
TBL_TEST
FIELD_A | FIELD_B | FIELD_C |
AAA | 124 | 12 |
BBB | 457 | 12 |
CCC | 347 | 12 |
AAA | 990 | 13 | <---
BBB | 387 | 13 |
CCC | 213 | 13 |
AAA | 888 | 14 |
BBB | 888 | 14 |
CCC | 888 | 14 |
******我在这个绝佳的地方找到了这个脚本,但是它只搜索字符串数据,并且仅搜索一次,但是我需要找到一个字符串和一个数字,并且仅查找两个记录均可用的记录。>
让我尝试更好地向我解释,希望我的英语有所帮助。 假设有一个包含3个表(TBL1,TBL2和TBL3)的数据库。 这些表有几列,但在本示例中,每个表只放置3列。
TBL1
FIELD_A | FIELD_B | FIELD_C |
AAA | 124 | 132 |
BBB | 457 | 1E2 |
CCC | 347 | 1E2 |
AAA | KK0 | 13W |
BBB | 387 | 136 |
CCC | 213 | 133 |
AAA | 888 | 990 |<---
BBB | 888 | 144 |
CCC | 888 | 14 |
TBL2
FIELD_A | FIELD_B | FIELD_C |
AAA | ASD | 12 |
BBB | 3ED | 12 |
CCC | 32E | 12 |
AAA | 990 | 13 |<---
BBB | 123 | 13 |
CCC | 213 | 13 |
AAA | 445 | 14 |
BBB | 234 | 14 |
CCC | A23 | 14 |
TBL3
FIELD_A | FIELD_B | FIELD_C |
AAA | 124 | 132 |
BBB | 457 | 990 |
CCC | 347 | 1E2 |
AAA | KK0 | 13W |
BBB | 387 | 136 |
CCC | 213 | 133 |
AAA | 888 | 990 |
BBB | 888 | 144 |
990 | 888 | AAA |<---
脚本的结果必须是这样的。
TBL1
FIELD_A / FIELD_C
TBL2
FIELD_A / FIELD_B
TBL3
FIELD_A / FIELD_C
希望足够清楚。 再次谢谢你。
答案 0 :(得分:0)
对于使用AND运算符的两个条件都使用where子句
select * from tablename where FIELD_A='AAA' and FIELD_B=990
答案 1 :(得分:0)
使用相关子查询
select * from your_table t
where exists ( select 1 from your_table t1
where t1.FIELD_A=t.FIELD_A and
t1.FIELD_B=990
)
答案 2 :(得分:0)
您需要在所有表中动态搜索两个值,以这个简单的示例为例(尝试粘贴并执行):
DECLARE @SQL AS nvarchar(MAX)
SET @SQL = ''
Select @SQL = @SQL + 'Select * from TBL_TEST where '+ISC.COLUMN_NAME+'= ''AAA'' AND '+(Select top(1) C.COLUMN_NAME FROM
INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME = C.TABLE_NAME
where IST.TABLE_NAME = 'TBL_TEST' and C.TABLE_NAME ='TBL_TEST' and c.COLUMN_NAME<>ISC.COLUMN_NAME)+'= ''990'''
FROM
INFORMATION_SCHEMA.TABLES IST
INNER JOIN INFORMATION_SCHEMA.COLUMNS ISC ON IST.TABLE_NAME = ISC.TABLE_NAME
where IST.TABLE_NAME = 'TBL_TEST'
exec(@SQL)