【问题标题】:Search a query in multiple sql server table [duplicate]在多个sql server表中搜索查询[重复]
【发布时间】:2017-05-18 12:37:51
【问题描述】:

我有很多表包含相同的列,我想搜索一个值并返回所有行,例如

Tab1

col1 col2 col3

val1   val2  val3

val7   val8  val9

Tab2

col1 col2 col3

val4   val2  val5

如果我在我的 java 代码中搜索 val2 这两行,我想要返回的 sql 语法

Tab1

col1   col2  col3

val1   val2  val3

Tab2

col1   col2  col3

val4   val2  val5

谢谢

【问题讨论】:

  • 欢迎来到stackoverflow。请阅读How to Ask。这不是编码服务,而是问答网站。
  • 我建议研究joins
  • This answer 可能对您有用。

标签: sql sql-server


【解决方案1】:

你也可以试试 sp_MSforeachtable 和临时表。

    CREATE TABLE #tt(col1 INT,col2 INT,col3 int)
    INSERT INTO #tt
    EXEC sp_MSforeachtable 'select  * from ? where col1=''1'' and OBJECT_ID(''?'') in (OBJECT_ID(''table1''),OBJECT_ID(''table1''),OBJECT_ID(''table1'')) ' 
    SELECT * FROM #tt

【讨论】:

    【解决方案2】:

    您可以尝试在两个查询之间执行UNION,每个查询都会选择您想要的记录:

    SELECT col1, col2, col3, 'Tab1' AS table_name
    FROM Tab1
    WHERE col2 = 'val2'
    UNION ALL
    SELECT col1, col2, col3, 'Tab2'
    FROM Tab2
    WHERE col2 = 'val2'
    

    如果你想在 any 列中搜索val2,那么你可以使用这个:

    SELECT col1, col2, col3, 'Tab1' AS table_name
    FROM Tab1
    WHERE col1 = 'val2' OR col2 = 'val2' OR col3 = 'val2'
    UNION ALL
    SELECT col1, col2, col3, 'Tab2'
    FROM Tab2
    WHERE col1 = 'val2' OR col2 = 'val2' OR col3 = 'val2'
    

    【讨论】:

    • 谢谢,但是我的表太多了,我无法手动完成。有没有任何程序可以使用信息方案进行搜索
    • 我会在两个选择中添加一个附加字段以显示表名,例如'Tab1' AS table_name,以便您知道哪个表与查询匹配。
    • @Tony 感谢您的意见。不确定我的答案是否是 OP 所追求的。
    猜你喜欢
    • 1970-01-01
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 2013-02-02
    • 1970-01-01
    相关资源
    最近更新 更多