我有一张表用于跟踪用户与其网站各个方面之间的关联。
我需要能够获得第一个可用行并更新其中的一列......标准是user_id
列是否已被使用。
id | tag_id | user_id | product_id
如果某行没有分配user_id
的标签,我希望能够使用并更新该行以获取最新购买的产品。
1 | 100001 | 29 | 66
2 | 100002 | 0 | 0
3 | 100003 | 0 | 0
你可以看到,第二行将是第一个合格的候选人。
我只是不确定SQL需要什么来实现这一目标
答案 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
的条件。