什么是简单的mysql查询

时间:2010-12-21 06:57:22

标签: mysql

我想获取客户信息,其中客户ID应为2,log_id应为最大值 我试过下面的查询,但是它找到了第一条记录。

简单查询是什么

mysql> select * from log_customer where customer_id =2 group by customer_id having max(log_id);
+--------+------------+-------------+---------------------+-----------+----------+
| log_id | visitor_id | customer_id | login_at            | logout_at | store_id |
+--------+------------+-------------+---------------------+-----------+----------+
|      2 |         56 |           2 | 2010-02-19 19:34:45 | NULL      |        1 | 
+--------+------------+-------------+---------------------+-----------+----------+
1 row in set (0.00 sec)

mysql> select * from log_customer where customer_id =2 limit 5;
+--------+------------+-------------+---------------------+---------------------+----------+
| log_id | visitor_id | customer_id | login_at            | logout_at           | store_id |
+--------+------------+-------------+---------------------+---------------------+----------+
|      2 |         56 |           2 | 2010-02-19 19:34:45 | NULL                |        1 | 
|      3 |        114 |           2 | 2010-02-23 17:31:55 | NULL                |        1 | 
|     31 |       1854 |           2 | 2010-03-08 18:31:28 | 2010-03-08 18:56:49 |        1 | 
|     32 |       1992 |           2 | 2010-03-09 01:12:43 | NULL                |        1 | 
|     33 |       2304 |           2 | 2010-03-09 14:42:39 | NULL                |        1 | 
+--------+------------+-------------+---------------------+---------------------+----------+

请不要建议 order by log_id desc我不想这样做

3 个答案:

答案 0 :(得分:3)

     SELECT  *
       FROM log_customer
      WHERE customer_id = 2
        AND log_id = (Select Max(Log_id)
                        FROM log_Customer
                       WHERE customer_id = 2)

应该做的伎俩

不使用Where:

进行编辑
     SELECT  *
       FROM log_customer
      WHERE log_id = (Select Max(Log_id)
                        FROM log_Customer
                       WHERE customer_id = 2)

答案 1 :(得分:2)

select * from log_customer 
left join
(select max(log_id) as max_id from log_customer where customer_id=2) 
  as log_customer2
on log_customer.log_id=log_customer2.max_id
where log_customer.customer_id=2;
哦,该死的......

select * from log_customer where customer_id=2 order by log_id desc limit 1;

答案 2 :(得分:2)

也许这样:

SELECT *
  FROM Log_Customer
 WHERE Customer_Id = 2
   AND Log_Id = (SELECT Max(Log_Id)
                   FROM Log_Customer
                  WHERE Customer_Id = 2)

就执行计划而言,子选择通常也不错。