Mysql - 更新表中第一行,其中列的空值为

时间:2018-01-26 12:45:25

标签: mysql

我有一个包含API密钥列表的数据库。我需要将电子邮件和名称与这些相关联。我希望我的查询更新第一行的名称和电子邮件,其中包含null作为电子邮件。

id    key            name  email

'1', '3046GUGYi7ab', NULL, NULL
'2', 'TXQzL33HVp1W', NULL, NULL
'3', 'YIK6DAnTVU4n', NULL, NULL

我的尝试就是这样,但显然,你不能在子查询中使用相同的表。

UPDATE key_table 
set email="test@x.com", `name`="test"
where id = (Select min(id) from key_table
            where email=null);

我确定这有一个简单的灵魂吗?有什么想法吗?

2 个答案:

答案 0 :(得分:1)

  

我的尝试就是这样,但显然,你不能在一个表中使用同一个表   子查询。

UPDATE key_table 
set email="test@x.com", `name`="test"
where id = (Select min(id) from key_table
            where email=null);

如果使用相同的表名,则需要将内部查询包装在额外的子查询中。
下面的查询应该有效。

<强>查询

UPDATE
  key_table 
SET
    email = "test@x.com"
  , name = "test"
WHERE
  id = ( 
        SELECT
          min_id 
        FROM (
           SELECT
             MIN(id) AS min_id
           FROM
             key_table
           WHERE
             email IS NULL
        )
         AS key_table            
      )

答案 1 :(得分:0)

试试这个

DT2[DT2[[eval(x)]]=="b",]
Empty data.table (0 rows) of 3 cols: x2,y,v

这只会影响第一行并更改值

希望这有帮助