Mysql 如何根据用户的第一个条目更新字段?

Mysql 如何根据用户的第一个条目更新字段?,mysql,sql-update,Mysql,Sql Update,我有一个表名设备 +---------+---------------+---------------------+ | user_id | device_status | created_at | +---------+---------------+---------------------+ | 1 | 0 | 2017-03-10 10:39:41 | | 1 | 0 | 2017-03-14 10

我有一个表名设备

+---------+---------------+---------------------+
| user_id | device_status | created_at          |
+---------+---------------+---------------------+
|       1 |             0 | 2017-03-10 10:39:41 |
|       1 |             0 | 2017-03-14 10:19:33 |
|       2 |             0 | 2017-03-14 10:57:59 |
|       1 |             0 | 2017-03-15 05:58:51 |
|       3 |             0 | 2017-03-15 06:01:32 |
|       3 |             0 | 2017-03-15 12:10:13 |
+---------+---------------+---------------------+
我想做的是更新首先存储在mysql表中的用户id的
device\u status

例如,我们有3行用户_id 1。在日期处创建了_。我想更新在2017-03-10 10:39:41创建的用户_id 1的设备_状态

编辑1:我使用的查询

UPDATE devices 
   SET device_status = 1 
 WHERE created_at = (SELECT created_at 
                       FROM (SELECT MIN(created_at) AS created_at 
                               FROM devices) AS t);
但该查询只更新了一条记录(2017-03-10 10:39:41)。 我想更新一下

|       2 |             0 | 2017-03-14 10:57:59 |

也要记录。

在带有where子句的子查询中使用min()函数

update devices set device_status=1 where user_id = 1 and 
created_at = (select min(created_at)  where user_id = 1);

希望它能解决您的问题。

如果您所有的日期都是互斥的,您可以根据用户id进行分组:

UPDATE devices 
   SET device_status = 1 
 WHERE created_at IN (SELECT created_at 
                        FROM (SELECT MIN(created_at) AS created_at 
                                FROM devices
                               GROUP BY user_id) AS t);

您是否尝试过使用min(创建于)??您面临哪些问题?问题是如何检查用户id?您希望每次都进行批更新还是单行更新?发布
SQL
tried@RealCheeseLord等等,让我来编辑这篇文章。
UPDATE devices 
   SET device_status = 1 
 WHERE created_at IN (SELECT created_at 
                        FROM (SELECT MIN(created_at) AS created_at 
                                FROM devices
                               GROUP BY user_id) AS t);