我试图获取表中存储的名称和地址,但却重复数据。我不知道如何避免它作为这个领域的新手。这里有一些命令和结果的图片。
命令:
结果:
所有者表:
地址表:
请帮帮我:(
P.S。它们都是虚拟数据。
答案 0 :(得分:4)
您需要使用相互引用的表中的列在两个表所有者和地址之间进行连接。
SELECT firstname,lastname,addressline_1
FROM owners o
JOIN addresses a
ON o.colName=a.colName
您的查询在两个表之间执行笛卡儿产品,为表所有者中的每一行提供表地址的所有行。< / p>
如果您使用推荐的ANSI SQL语法使用 ON 子句而不是 WHERE 子句执行连接,那么您将避免获得无意义的行。虽然您还没有指定加入表之间的条件,但使用 WHERE 子句加入的旧语法仍然成功执行但在使用 ON 子句时会抛出错误
See this thread for detailed discussion ON vs WHERE
修改强>
根据您的表格架构,查询将是
SELECT firstname,lastname,addressline_1
FROM owners o
JOIN addresses a
ON o.ownerid=a.owners_ownerid
答案 1 :(得分:1)
您必须在查询中添加where
子句: -
SELECT OWNERS.first_name, OWNERS.last_name, ADDRESSES.address_line1
FROM OWNERS, ADDRESSES
WHERE OWNERS.ownerid = ADDRESSES.owners_ownerid
或者您可以使用join
SELECT OWNERS.first_name, OWNERS.last_name, ADDRESSES.address_line1
FROM OWNERS
JOIN ADDRESSES
ON OWNERS.ownerid = ADDRESSES.owners_ownerid