如何编写返回具有指定字段的唯一对的行的SQL查询。
例如,给定表
(1, 'Bill Smith', '1 Main Street'),
(2, 'Harriet Jones', '2 Cherry Street'),
(3, 'Bill Smith', '1 West 125th Street'),
(4, 'Susan Smith', '1 Main Street'),
(5, 'Bill Smith', '1 Main Street')
我想使用唯一的名称/地址对进行SELECT,然后返回(对于此示例)
(1, 'Bill Smith', '1 Main Street'),
(2, 'Harriet Jones', '2 Cherry Street'),
(3, 'Bill Smith', '1 West 125th Street'),
(4, 'Susan Smith', '1 Main Street')
此示例也可在
中找到http://sqlfiddle.com/#!9/3d4b4/1
感谢。
答案 0 :(得分:1)
您可以使用DISTINCT
进行查询。您应该仅为此目的选择数据列。
编辑:哦,第二张桌子只是想要的结果 - 忘了UNION。
答案 1 :(得分:1)
您可以使用所需值的选择
select distinct name, address from your_table ;
答案 2 :(得分:1)
您可以使用GROUP BY
为每个名称/地址对创建一个组,并获得每个组的最小ID。然后你可以选择带有这些ID的行;
SELECT id, name, address
FROM testThing
WHERE id IN (
SELECT MIN(id) FROM testThing GROUP BY name, address
);
如果您不想选择ID,则在其他字段中使用DISTINCT
会更简单,因为scaisEdge会在其答案中显示。