可能之前有人问过,但我找不到答案。
表数据有两列:
Source Dest
1 2
1 2
2 1
3 1
我尝试提出将返回的MS Access 2003 SQL查询:
1 2
3 1
但一切都无济于事。请帮忙!
更新:确切地说,我正在尝试排除2,1因为1,2已经包括在内。我只需要序列无关紧要的独特组合。
答案 0 :(得分:2)
对于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)
或( Nice和Access Formatted ... )
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));
答案 1 :(得分:0)
使用此查询:
SELECT distinct * from tabval ;
答案 2 :(得分:0)
为了消除重复,“select distinct”比“group by”更容易:
select distinct source,dest from data;
编辑:我现在看到你正试图获得独特的组合(不包括1,2和2,1)。你可以这样做:
select distinct source,dest from data
minus
select dest,source from data where source < dest
“减号”会翻转订单并消除您已经匹配的情况; “where source&lt; dest”阻止你删除(1,2)和(2,1)
答案 3 :(得分:0)
您的问题被错误地询问了。 “独特的组合”是您的所有记录。但我认为你的意思是每个来源一行。所以它是:
SELECT *
FROM tab t1
WHERE t1.Dest IN
(
SELECT TOP 1 DISTINCT t2.Dest
FROM tab t2
WHERE t1.Source = t2.Source
)
答案 4 :(得分:0)
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
在MySQL中。