2010-09-21 74 views
2

我需要做的是從聯合查詢中得到一個表名,其中有來自不同表的4個選擇。我需要獲取id和表名以作進一步處理。在SQL查詢中包含表名

,比如我有表1,表2,表3表4和有一個查詢:

SELECT id from table1,blablabla 
UNION 
SELECT id from table2,blablabla 
UNION 
SELECT id from table3,blablabla 
UNION 
SELECT id from table4,blablabla 

我需要像結果:

1, blablabla, table1 
4, blablabla, table4 
7, blablabla, table2 
+0

你可以使用代碼標籤,並告訴我們你究竟是什麼? – JNK 2010-09-21 13:49:26

回答

15
SELECT 
    ID, 
    'table1' as TableName 
FROM 
    table1 

UNION 

... 

SELECT 
    ID, 
    'table4' as TableName 
FROM 
    table4 
+1

謝謝! Exacly我所需要的。 – Alakdae 2010-09-21 13:54:55

1

中添加的表名的要求

SELECT 
    id, 
    blablabla, 
    'table1' as tableName 
FROM 
    table1 
UNION 
SELECT 
    id, 
    blablabla, 
    'table2' as tableName 
FROM 
    table2 
... 
+0

謝謝!盡我所能,但devnull是第一個,所以我接受他的答案。 – Alakdae 2010-09-21 13:56:43

2
SELECT myid, My otherfield, 'table1' as tablename From table1 
UNION 
SELECT myid, My otherfield, 'mytabl2' From table2 

考慮其他幾點,如果這些是互斥使用的表UNION ALL相反,它會快得多。另外,當數據庫設計不正確時,如果這些表中有相同的字段,爲什麼它們不是全部在一個表中,這種類型的問題通常會出現?如果可能的話重新設計,至少考慮你是否會更好地服務於此。不知道這些表是什麼,我可以;如果他們應該在一張桌子上,它通常是這樣,但通常這是一種代碼味道。

+0

感謝您的信息。開始時它是一張表,但新數據來自其他類別,表格現在用於不同類別並保存類似數據,但出於安全原因應保持分開。只有這一個查詢訪問多個表,並且僅用於列表。 – Alakdae 2010-09-21 14:04:16