2016-03-06 47 views

回答

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) 

注:這兩個查詢將導致不同的格式設置。另外請記住,你正在做三張表的笛卡爾積。

+0

謝謝...!如果第二張和第三張沒有找到,我們是否可以通過某種方式搜索第一張表中的值?表名是不同的,但結構和列的名稱是相同的。:( –

+0

謝謝你們..這是我的查詢現在但是,我想知道如何搜索多個值,就像我們在哪裏('123' ,'321','432')declare @@ cp varchar(20)set @cp ='123'從table_a中選擇a,b,c,其中a = @@ cp union從table_b中選擇a,b,c其中a = @@ cp union所有SELECT a,b,c,來自table_c,其中a = @@ cp –

1

在您的查詢中: 對於具有相同列名的多個表,您需要指定表名和列名。而不是僅僅一個,你需要像table_a.a = '12344'

您的需要指定它: 你應該在同一時間內搜索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' 
+0

謝謝... !!!有沒有什麼辦法可以在第一個表中搜索一個值,如果沒有找到第二個,然後第三個?表名是不同的,但結構和列名相同.. :( –

+0

然後你將拆分成單個查詢。使用@@ rowcount檢查第一個查詢的任何結果。如果@@ rowcount = 0然後執行第二個查詢等等,您可能還需要使用臨時表來存儲每個查詢的結果,然後在末尾返回一個結果 – Squirrel

+0

謝謝你..這裏是我的查詢現在但是我想知道如何搜索多個值,像我們在('123','321','432')聲明@@ cp varchar(20)set @cp ='123'從table_a中選擇a,b,c,其中a = @@ cp union all 從table_b中選擇a,b,c,其中a = @@ cp union all SELECT a,b,c ,從table_c where a = @@ cp –