繁体   English   中英

选择唯一值SQL

[英]Selecting unique value 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

使用distinct属性..从table1中选择Distinct(SAMPLE)

如果两个表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 voila,四个记录,你可能会期望两个。 将DISTINCT添加到此将不会实现任何效果,因为每个行都是不同的。 要链接相关表格,您需要以下内容: -

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM