首页 > mysql如何查询到需要的结果集

mysql如何查询到需要的结果集

有一张消费记录表,表名为consume_record,包含三个字段:

我想得到某个用户使用A,B,C,D这四种类型的最早的消费记录,SQL语句该怎么写?

我的SQL是这么写的:

SELECT 
    *
FROM
    consume_record
WHERE
    uid = 1
        AND consume_tpye IN (A , B, C, D)
GROUP BY consume_tpye
ORDER BY consume_time DESC

这样得到的结果不准确,大一学生狗求教育!


更新,忘了加题目的ABCD限制了=w=

用聚集函数:

SELECT  uid,
        consume_type,
        MIN(consume_time)
FROM    consume_record
WHERE   uid = '1'
        AND
        consume_type IN ('A','B','C','D')
GROUP BY consume_type;

http://sqlfiddle.com/#!2/baee0/1


不用聚集函数:

SELECT  r1.*
FROM    consume_record r1
        LEFT JOIN
        consume_record r2
        ON  r1.uid = r2.uid
            AND
            r1.consume_type = r2.consume_type
            AND
            r1.consume_time > r2.consume_time
WHERE   r2.uid IS NULL
        AND
        r1.uid = "1"
        AND
        r1.consume_type in ('A','B','C','D')
;

http://sqlfiddle.com/#!2/baee0/3


SELECT 
    *
FROM
    consume_record AS S
WHERE
    uid = 1
        AND consume_tpye IN (A, B, C, D)
        AND S.consume_time >= ALL (
            SELECT 
                consume_time
            FROM
                consume_record
            WHERE
                id = 1 AND consume_type IN (A, B, C, D)
        );

select uid, consume_type, min(consume_time)
  from consume_record r
 where r.consume_type in ('A', 'B', 'C', 'D')
   and uid = ?
 group by uid, consume_type

【热门文章】
【热门文章】