2014-04-08 115 views
1

我有2個表,我內加入他們使用EID內聯接返回兩個表中相同的列訪問SQL

CSCcode Description BNO  BNO-CSCcode  E_ID 

05078  blah1  5430  5430-05078  1098 
05026  blah2  5431  5431-05026  1077 
05026  blah3  5431  5431-05026  3011 
04020  blah4  8580  8580-04020  3000 
07620  blah5  7560  7560-07620  7890 
07620  blah6  7560  7560-07620  8560 
05020  blah1  5560  5560-04020  1056 

二表

 y/n  EID 

      y  1056 
      n  1098 
      y  1077 
      n  3011 
      y  3000 
      n  7890 
      n  8560 

我選擇從表中的所有領域來自表2的一個和y/n字段,但是它從包括EID的表2中檢索全部。我不想從表2中檢索EID,因爲結果表將有兩個EID字段。

我查詢

SELECT *, table2 .EID 
FROM table1 INNER JOIN table2 ON table1 .E_ID = table2 .EID; 

回答

2

「我是從一個表中選擇所有字段」

不,你是選擇從所有表中的所有領域。你需要指定表,如果你只是想從一個表中的所有字段:

SELECT table1.*, table2.EID 

但是,使用*是不好的實踐與實效。最好指定所需的字段,以便您添加到表中的任何字段都不會自動包含,因爲這可能會破壞您的查詢。

1

你不能做這樣的事情「SELECT *,表2 .EID」 - 你應該包括表1但是你的所有領域,它是不是一個好的做法,即使你正在從一張桌子上選擇。

SELECT 
    table1.CSCcode, 
    table1.Descriptio, 
    table1.BNO, 
    table1.BNO-CSCcode, 
    table1.E_ID, 
    table2 .EID 
FROM 
    table1 INNER JOIN table2 ON table1 .E_ID = table2 .EID 
+0

在這裏,在樣品表1它只有5列,但在實際它包含超過30列,這是ÿ提到從表1都提到* – vuyy1182

+0

http://stackoverflow.com/a/7031601/ 3444240 – potashin

1

您的查詢中選擇兩個表中的一切,以及從表2變化專門的EID列它:

SELECT table1.*, table2.y/n 
... 

雖然,在其他的答案說明,避免使用*,而是列出列名table.columnName

1

指定表從要選擇所有字段修改您的查詢

SELECT 
    table1.*, table2.EID 
FROM 
    table1 
    INNER JOIN table2 
     ON table1.E_ID = table2.EID; 

如果您使用查詢設計器,Access有時會將查詢的屬性Output All Fields設置爲Yes。確保它被設置爲No並手動選擇您想要的字段。 (在設計器中單擊鼠標右鍵,然後在上下文菜單中選擇Properties...以查看屬性。)

1

您有時遇到意想不到的原因*是因爲查詢設計器中存在屬性。在設計器中將其更改爲No。或者,像其他答案說的那樣,只需從您的查詢中刪除*即可。

enter image description here

相關問題