尝试从具有相同结构的多个sql表中搜索数字

时间:2016-03-06 09:47:54

标签: sql-server

尝试从具有相同结构的多个sql表中搜索数字,这是我正在尝试做的select a, b, c from table_a, table_b, table_c where a = '12344'

结果可能来自一个表中的任何一个。

它给我们这个错误

  

不明确的列名

2 个答案:

答案 0 :(得分:1)

在您的查询上: 对于具有相同列名的多个表,您需要指定表名和列名。您需要将其指定为table_a.a = '12344'

,而不仅仅是a

根据您的要求: 您应该一次搜索1个表并使用UNION ALL

SELECT a, b, c, from table_a where a = '12344'
union all
SELECT a, b, c, from table_b where a = '12344'
union all
SELECT a, b, c, from table_c where a = '12344'

答案 1 :(得分:0)

问题是您在select中有三个表,并且您没有限定使用的列。我想你正在寻找这个

使用UNION ALL

select a from table_a where a = '12344'
UNION ALL
select b from  table_b where a = '12344'
UNION ALL
select c from  table_c where a = '12344'

或使用join

的另一种方式
SELECT * 
FROM   table_a ta 
       CROSS JOIN table_b tb 
       CROSS JOIN table_c tc 
WHERE  '12344' IN ( ta.a, tb.a, tc.a ) 

注意:两个查询都会以不同的格式设置结果。还要记住,你正在做三张桌子的笛卡尔积。