SQL单表有两列

时间:2010-11-30 03:32:05

标签: sql

我有一个表:检查,有两列: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将不包括在内,因为它们具有重复的备忘录值。

再次感谢您的帮助。

5 个答案:

答案 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