我有两张桌子,而我在内部使用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;
答案 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
。或者,与其他答案一样,只需从查询中删除*
即可。