选择唯一值SQL

选择唯一值SQL,sql,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 使用distinct属性。。从表1中选择Distinct(SAMPLE)(示例)如果两个表发现和类相关,则需要使用某种类型的联接

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

使用distinct属性。。从表1中选择Distinct(SAMPLE)(示例)

如果两个表发现和类相关,则需要使用某种类型的联接(内部,猜测)。得到四个结果的原因是,您正在运行一个查询,该查询返回结果的笛卡尔积——也就是说,您将得到两个表的所有组合,而没有一个公共字段将它们链接在一起

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

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
SELECT * FROM Person INNER JOIN Salary ON Person.PersonID = Salary.PersonID
瞧,四张唱片,你可能会想到两张。向其中添加DISTINCT将一事无成,因为每一行都是不同的。要链接相关表,您需要以下内容:-

PersonID  Name  PersonID  Salary
1         Matt  1         23000
2         Fred  2         18000
1         Matt  2         18000
2         Fred  1         23000
SELECT * FROM Person INNER JOIN Salary ON Person.PersonID = Salary.PersonID

你在用什么<代码>SQL Server<代码>MySQL<代码>Oracle<代码>DB2?等您还可以提供具有所需结果的样本数据吗?可能是a.FIND_ID的
分组
SELECT DISTINCT(a.FIND_ID)
Google for“carthesian product”-旧样式的逗号分隔表格列表样式已随ANSI-92 SQL标准(20年前)而终止。如果记录在同一个
ID
NAME
上有不同的
期间
,该怎么办?它将显示所有不同的记录,运行查询并查看结果。您可以通过查看它来了解我遇到的问题是,对于每个A.x>=4 station返回相同的查找,输入DISTINCT(A.find_ID)并不能解决它。太棒了!我已经解决了我的问题!在发布答案之前需要等待!