运行此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
答案 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