我有一个表:检查,有两列:ID,备注
ID是主键。
我想要一个返回两列的查询:ID,Memo BUT仅在Memo为DISTINCT的地方
我可以执行以下操作从Memo中获取不同的值:
SELECT DISTINCT(memo)
FROM checking
如何从ID列返回这些Memo值及其值?
我在试图内外联接的圈子里跑,但我失败了。
感谢您的帮助
示例数据:
ID Memo
1 a
2 c
3 e
4 g
5 a
6 c
期望的回报:
1,a
2,c
3,e
4,g
5和6将不包括在内,因为它们具有重复的备忘录值。
再次感谢您的帮助。
答案 0 :(得分:4)
SELECT min(id),备忘录 从检查 按备忘录分组
答案 1 :(得分:2)
如果我理解正确,您希望找到与每个唯一备忘录值对应的第一个(?)主键值? (我假设这是因为你不能在逻辑上同时拥有唯一的备忘录和Id值,因为每个重复的备忘录值必然有多个ID值...)如果假设是正确的,这将有效:
SELECT m.memo,
(SELECT TOP 1 x.id
FROM checking x
WHERE x.memo = m.memo
ORDER BY x.id) as ID
FROM checking m
GROUP BY m.memo
答案 2 :(得分:0)
SELECT ID,来自CHECKING WHERE ID IN的MEMO(选择MIN(ID)来检查MEMERE IN(选择DISTINCT备忘录))
虽然是嵌套的,但这个查询可以达到目的!
答案 3 :(得分:0)
SELECT id,memo
FROM test
WHERE id IN
(
SELECT MIN(id)
FROM test
WHERE memo IN
(
SELECT DISTINCT memo
FROM test
)
GROUP BY memo
)
答案 4 :(得分:-1)
select id, memo
from checking
join
( /*only where Memo is DISTINCT*/
select distinct(memo) as memo
from checking
) as m on checking.memo = m.memo