考慮我在三個表上使用連接來獲得想要的結果集...Mysql加入 - 如何知道從哪個表檢索哪一行...?
現在在那個結果集中,是否有無論如何,我可以找出哪一行來自哪個表......?
更新: 我看到我錯誤地表述了這個問題....正如下面的答案之一所指出的,由join返回的結果集可能會包含由多個talbe組成的列。 。
所以問題實際上應該是「考慮我使用的三個表工會得到期望的結果集...」
考慮我在三個表上使用連接來獲得想要的結果集...Mysql加入 - 如何知道從哪個表檢索哪一行...?
現在在那個結果集中,是否有無論如何,我可以找出哪一行來自哪個表......?
更新: 我看到我錯誤地表述了這個問題....正如下面的答案之一所指出的,由join返回的結果集可能會包含由多個talbe組成的列。 。
所以問題實際上應該是「考慮我使用的三個表工會得到期望的結果集...」
如果你問這個問題,那麼你的數據庫可能是不正確的結構。 (正確地是一個主觀術語)。
規範化數據庫上正確的SQL查詢不應該依賴或不關心數據來自何處。
每行都是所有表的組合,空值插入到左/右/外連接的列中,這些列與連接標準不匹配。你也許可以測試一個列(來自一個特定的表)是否爲空,並且從中得出非空值必須來自相反的表。
然後,如果您實際上正在執行UNION,正如Marcelo所建議的那樣,您必須查看輔助列才能確定數據的來源,因爲這些信息會在組合中丟失。
您可以將表標識列添加到每個:
select 'A' as table_name, col1, col2 from A
union
select 'B' as table_name, col1, col2 from B
union
...
這將返回由你的應用程序作爲任何普通的select語句來處理一個結果集:
while (rows available) {
row = fetchrow
if row.table_name == 'A' then
do special handling for table A
else if row.table_name == 'B' then
do special handling for table B
else if ...
}
實際語法取決於您正在使用的語言,但大多數過程語言都遵循上面的方案。
您的意思是_union_? – 2010-04-15 10:21:01