Sql 获取两个字段值的唯一组合
可能以前有人问过,但我找不到答案 表数据有两列:Sql 获取两个字段值的唯一组合,sql,ms-access,Sql,Ms Access,可能以前有人问过,但我找不到答案 表数据有两列: Source Dest 1 2 1 2 2 1 3 1 我正在尝试提出一个MS Access 2003 SQL查询,该查询将返回: 1 2 3 1 但一切都无济于事。请帮忙 更新:没错,我正试图排除2,1,因为1,2已经包括在内。我只需要顺序不重要的唯一组合。使用此查询: SELECT distinct * from tabval ; 要消除重复,
Source Dest
1 2
1 2
2 1
3 1
我正在尝试提出一个MS Access 2003 SQL查询,该查询将返回:
1 2
3 1
但一切都无济于事。请帮忙
更新:没错,我正试图排除2,1,因为1,2已经包括在内。我只需要顺序不重要的唯一组合。使用此查询:
SELECT distinct * from tabval ;
要消除重复,“选择不同”比“分组依据”更容易:
编辑:我现在看到您正在尝试获得唯一的组合(不要同时包含1,2和2,1)。你可以这样做:
select distinct source,dest from data
minus
select dest,source from data where source < dest
从数据中选择不同的源、目的地
减
选择dest,source from data,其中source
“减号”翻转顺序,消除已经匹配的情况;“where source
SELECT *
FROM tab t1
WHERE t1.Dest IN
(
SELECT TOP 1 DISTINCT t2.Dest
FROM tab t2
WHERE t1.Source = t2.Source
)
对于Ms Access,您可以尝试
SELECT DISTINCT
*
FROM Table1 tM
WHERE NOT EXISTS(SELECT 1 FROM Table1 t WHERE tM.Source = t.Dest AND tM.Dest = t.Source AND tm.Source > t.Source)
编辑:
示例与表数据相同
SELECT DISTINCT
*
FROM Data tM
WHERE NOT EXISTS(SELECT 1 FROM Data t WHERE tM.Source = t.Dest AND tM.Dest = t.Source AND tm.Source > t.Source)
或者(尼斯和Access格式…)
会回来的
1, 2
1, 3
在MySQL中。2-1也是唯一的,是否应该将其排除在外?为什么2,1会被排除在外?是因为包含了1,2吗?然后你如何决定使用1,2还是2,1?2,1应该被排除,这就是问题所在,1,2还是2,1被包含并不重要,只要它只是行中的一行。将返回1,2;2,1; 3.1-2,1应该被排除在外您不能在MS Access中使用减号,因此会出现以下问题:)第一次修订返回1,2;1,2; 3,1这显然是不正确的。我只是在MS Access上运行它,它返回1,2 3,1。你测试过这个吗?您是否包含了DISTINCT?Astander,一对一地复制了它,刚刚将表1替换为DataAstander mine is Access 2003,SP3请检查您的查询属性是否将Unique Value设置为Yes。在MS Access 2003中不起作用,抱怨in子句。顺便说一句,以防问题中存在所需输出的示例,以消除可能的歧义。此查询将返回所需的行,但我不知道如何在ms access sql中写入。Andrey,抱歉,我在问题中澄清了它必须是access 2003。
SELECT DISTINCT *
FROM Data AS tM
WHERE (((Exists (SELECT 1 FROM Data t WHERE tM.Source = t.Dest AND tM.Dest = t.Source AND tm.Source > t.Source))=False));
SELECT t1.* FROM
(SELECT
LEAST(Source, Dest) AS min_val,
GREATEST(Source, Dest) AS max_val
FROM table_name) AS t1
GROUP BY t1.min_val, t1.max_val
1, 2
1, 3