0

运行此 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
4

2 回答 2

2

使用 distinct 属性.. Select Distinct(SAMPLE) From table1

于 2013-01-27T13:29:08.910 回答
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

等等,四个记录,你可能期望两个。向其中添加 DISTINCT 将一事无成,因为每一行都是不同的。要链接相关表格,您需要以下内容: -

SELECT * FROM Person INNER JOIN Salary ON Person.PersonID = Salary.PersonID
于 2013-01-27T13:46:29.130 回答