内连接从两个表中返回相同的列访问sql

时间:2014-04-08 21:18:07

标签: sql ms-access join

我有两张桌子,而我在内部使用EID加入他们

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中选择所有字段,从表2中选择y / n字段,但它从包含EID的表2中检索所有字段。我不想从table2检索EID,因为结果表将有两个EID字段。

我的查询

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

5 个答案:

答案 0 :(得分:2)

  

“我正在从表格中选择所有字段”

不,您正在选择所有表格中的所有字段。如果您只想要一个表中的所有字段,则需要指定表:

SELECT table1.*, table2.EID

然而,使用*并不是很好。最好指定所需的字段,以便不会自动包含您添加到表中的任何字段,因为这可能会破坏您的查询。

答案 1 :(得分:1)

你不能做这样的事情'SELECT *,table2 .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

答案 2 :(得分:1)

您的查询是从两个表中选择所有内容,特别是从表2中选择EID列。将其更改为:

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

尽管如其他答案中所述,但请避免使用*,而是列出列名table.columnName等。

答案 3 :(得分:1)

指定要从中选择所有字段的表,将查询修改为

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

如果您使用的是查询设计器,Access有时会将查询的属性Output All Fields设置为Yes。确保将其设置为No并手动选择所需的字段。 (在设计器中单击鼠标右键,然后在上下文菜单中选择Properties...以查看属性。)

答案 4 :(得分:1)

您有时会遇到意外*的原因是因为查询设计器中存在属性。将其更改为设计器中的No。或者,与其他答案一样,只需从查询中删除*即可。

enter image description here

相关问题