Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

多字段去重select查询难题(带示例,耗了我一天时间了,求大神帮忙)

礼拜天  发表于:2014-06-24 18:52:48  
复制

球队 对手 比赛地点 首都
中国 北京
美国 华盛顿
俄罗斯 莫斯科
中国 北京
美国 华盛顿
俄罗斯 莫斯科
中国 北京
美国 华盛顿
俄罗斯 莫斯科


如上表,需要对上表中的“球队”、“对手”两个字段全部一样的记录进行剔重,同时:当多行记录的上述两个字段重复时,保留“比赛地点”为“美国”的记录(每个字段值都要显示)。

也就是说,按上述方式查询后的结果应为:

球队 对手 比赛地点 首都
美国 华盛顿
美国 华盛顿
中国 北京
美国 华盛顿
俄罗斯 莫斯科

请问:select 语句应该怎么写?


 

Top
小赵 发表于:2014-06-25 09:53:15

耗了我一天时间了,求大神帮忙==大神帮你搞定了。见示例示例

 自学:自己找资料就要花半小时至一小时,甚至一周后才找到解决方法,甚至找不到。
 培训:在老师的指导下,少则几分钟,多则十几分钟半小时,老师做示例或远程协助你完成。

如果你一天的工资是100,那大神给你省了100元。



Well 发表于:2014-06-25 11:28:09
SELECT 表1.球队, 表1.对手, 表1.比赛地点, 表1.首都
FROM 表1

WHERE (((表1.球队) In (SELECT [球队] FROM [表1] As Tmp GROUP BY [球队],[对手] HAVING Count(*)>1  And [对手] = [表1].[对手])) AND ((表1.比赛地点) In ("美国")))  


SELECT 條件查詢    like in  is  有什麼區別 



在水一方 发表于:2014-06-27 09:59:14

一句联合查询就可以:

SELECT 表1.球队, 表1.对手, First(表1.比赛地点) AS 比赛地点, First(表1.首都) AS 首都

FROM 表1 GROUP BY 表1.球队, 表1.对手 HAVING Count(*)=1
UNION
SELECT 表1.球队, 表1.对手, 表1.比赛地点, 表1.首都 
FROM 表1 WHERE 表1.球队 In (SELECT 球队 FROM 表1 As Tmp GROUP BY 球队,对手 HAVING Count(*)>1  And 对手 = 表1.对手) AND 表1.比赛地点="美国";


说明:

前半部分是利用count=1查询只有一条记录的球队;

后半部分是利用count>1查询多条记录的球队并利用子查询筛选出特定内容的记录。




丘山 发表于:2014-06-29 23:07:01

SELECT 表1.球队, 表1.对手, 表1.比赛地点, 表1.首都
FROM 表1
WHERE (((DCount("*","表1","[球队]='" & [球队] & "' and [对手]='" & [对手] & "'"))=1)) OR (((表1.比赛地点)="美国") AND ((DCount("*","表1","[球队]='" & [球队] & "' and [对手]='" & [对手] & "'"))>1));

这个应该能满足你的需求



煮江品茶 发表于:2014-07-01 11:10:22

可以将字符串拼接起来比较:

select * from tbname
where (dcount("*","tbname","[球队] & [对手]='" & [球队] & [对手] & "'")>1 and [比赛地点]="美国") or (dcount("*","tbname","[球队] & [对手]='" & [球队] & [对手] & "'")=1)



总记录:5篇  页次:1/1 9 1 :