2012-10-26 104 views
0

I`ve了這樣一個SQL查詢:具有相同名稱的選擇領域內加入

SELECT com.* 
from VE_COMMAND_SITE_BIND bnd INNER JOIN [dbo].[VE_COMMAND] com ON bnd.COMMAND_ID = com.ID 

有兩個表中命名爲「ON」字段。我想從com的第一個表格com中選擇所有的字段。 , 但是來自第二表bnd的字段「ON」。我也不喜歡t want to mention all the com的字段 - 我喜歡com。

在MSSQL中有沒有什麼合適的方法來做這樣的事情?

+1

選擇你需要適當的別名,但只使用'*'來測試不生產 –

回答

1

如果您的問題是「我可以選擇除表格com中的一個字段以外的所有字段,然後選擇表格bnd中的一個字段嗎?」那麼答案是「不,你必須逐個定義結果字段」

您可以做

select com.*, bnd.[on] as bndon 

select com.field1, com.field2,... 

此外,你應該儘量避免調用你的領域「上「爲on是保留字。

由於可維護性和潛在的性能原因,最好單獨指定您想從select語句返回的字段。

0

您可以在VE_Command(com)表中使用通配符*運算符,並從VE_COMMAND_SITE_BIND(bnd)中挑選出您想要的字段。

要注意的一件事是命名衝突。你說在這兩個表中,該字段被稱爲ON。這可能會導致試圖通過名稱訪問字段的任何客戶端應用程序出現問題。 (其中一個做它挑,等等?)

由於您的要求不是要列出COM的所有領域,可能更容易重新命名你帶出BND的一個

SELECT 
    com.*, 
    bnd.ON AS BindOn 
FROM 
    ...