选择唯一值SQL

时间:2013-01-27 13:25:36

标签: sql

运行此SQL查询时,它会返回每个Find_ID四次,如何才能使它只选择唯一的查找?

SELECT A.FIND_ID, B.NAME, PERIOD
FROM FINDS A, CLASS B
WHERE A.X >= 4
AND A.X <= 10
AND A.Y >= 4
AND A.Y <= 10
AND FIND_ID = DISTINCT

返回

FIND_ID NAME                 PERIOD
========== ==================== ====================
         2 SHARD                BRONZE
         5 SHARD                BRONZE
         2 METAL_WORK           IRON_AGE
         5 METAL_WORK           IRON_AGE
         2 FLINT                MESOLITHIC
         5 FLINT                MESOLITHIC
         2 BONE                 RECENT
         5 BONE                 RECENT

2 个答案:

答案 0 :(得分:2)

使用distinct属性。从table1

中选择Distinct(SAMPLE)

答案 1 :(得分:0)

如果两个表FINDS和CLASS相关,则需要使用某种类型的连接(INNER,猜测)。您得到四个结果的原因是您正在运行一个返回结果的笛卡尔积的查询 - 也就是说,您将获得两个表连接在一起的所有组合,而没有将两个表连接在一起的公共字段。

这是一个例子。假设您有两个非常简单的表格: -

PersonID   Name
1           Matt
2           Fred

PersonID   Salary
1           23000
2           18000

然后查询如下: -

SELECT * FROM Person, Salary

会返回类似的内容: -

PersonID  Name  PersonID  Salary
1         Matt  1         23000
2         Fred  2         18000
1         Matt  2         18000
2         Fred  1         23000

Et瞧,四个记录,你可能会发现两个。将DISTINCT添加到此将不会实现任何效果,因为每个行都是不同的。要链接相关表,您需要以下内容: -

SELECT * FROM Person INNER JOIN Salary ON Person.PersonID = Salary.PersonID