MySQL:更新第一个可用列为空的行

时间:2012-08-22 18:01:33

标签: php mysql sql database

我有一张表用于跟踪用户与其网站各个方面之间的关联。

我需要能够获得第一个可用行并更新其中的一列......标准是user_id列是否已被使用。

id | tag_id | user_id | product_id

如果某行没有分配user_id的标签,我希望能够使用并更新该行以获取最新购买的产品。

1 | 100001 | 29 | 66  
2 | 100002 | 0  | 0 
3 | 100003 | 0  | 0

你可以看到,第二行将是第一个合格的候选人。

我只是不确定SQL需要什么来实现这一目标

3 个答案:

答案 0 :(得分:2)

如果我理解正确,你想要更新第一个可用的空(不是空但是空)user_id行。怎么样?

UPDATE users 
SET user_id = 'user_value_here' 
WHERE user_id='' 
LIMIT 1

答案 1 :(得分:2)

UPDATE yourTablename SET user_id = 'your value for userid',
product_id='ur value for productid' WHERE id=(select min(id) where user_id='0');

已经告知的替代方法是有效的,但如果您的表具有id

的排序
UPDATE yourTablename SET user_id = 'your value for userid',
product_id='ur value for productid' where user_id='0' LIMIT 1;

答案 2 :(得分:0)

如果您的索引已排序ASC,则下面的查询应按顺序查找第一个结果。

请参阅fiddle

UPDATE table SET user_id = 1 WHERE user_id IS NULL LIMIT 1

您可以将IS NULL替换为空user_id的条件。