Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mysql中获得最大且不重复的表中数据?_Mysql_Sql_Mysql Workbench - Fatal编程技术网

如何在mysql中获得最大且不重复的表中数据?

如何在mysql中获得最大且不重复的表中数据?,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,I表数据如下所示: id car_id create_time remark 6c3befd0201a4691 4539196f55b54523986535539ed7beef 2017-07-1 16:42:49 firstcar 769d85b323bb4a1c 4539196f55b54523986535539ed7beef 2017-07-18 1

I表数据如下所示:

id                  car_id                              create_time           remark
6c3befd0201a4691    4539196f55b54523986535539ed7beef    2017-07-1 16:42:49    firstcar
769d85b323bb4a1c    4539196f55b54523986535539ed7beef    2017-07-18 16:42:49   secondcar
984660c4189e499     575d90e340d14cf1bef4349b7bb5de9a    2017-07-3 16:42:49    firstjeep
我想得到最新的数据。这意味着如果有两个相同的车号,我只想根据最新的时间得到一个。如何写作

我试着写这篇文章,但我发现它可能是错的。如果其他记录的创建时间相同?如何解决这个问题

SELECT * FROM t_decorate_car 
WHERE create_time IN 
    (SELECT tmptime FROM
        (SELECT MAX(create_time),tmptime,car_id
         FROM decorate 
         GROUP BY car_id
        ) tmp
    )

处理此问题的一种规范方法是将表连接到一个子查询,该子查询将查找每个
car\u id
的最新记录。此子查询用作筛选器,用于删除不希望看到的旧记录

SELECT t1.*
FROM t_decorate_car t1
INNER JOIN
(
    SELECT car_id, MAX(create_time) AS max_create_time
    FROM t_decorate_car
    GROUP BY car_id
) t2
    ON t1.car_id      = t2.car_id AND
       t1.create_time = t2.max_create_time
顺便说一句,如果您想继续沿着当前道路前进,也可以使用相关子查询来解决此问题:

SELECT t1.*
FROM t_decorate_car t1
WHERE t1.create_time = (SELECT MAX(t2.create_time) FROM t_decorate_car t2
                        WHERE t2.car_id = t1.car_id)
您的方法是正确的,但从未使用right
WHERE
子句将子查询连接到主查询