[英]Update row with minimum value sql
我有这张桌子:
-----------------------
summonerId | timestamp
-----------------------
253222 | 14395235091096
929112 | 14395235091056
(...)
我想用更低的时间戳来更新行但我不能,当我这样做时
UPDATE summoners_shell
SET
summonerId = ".$s.",
timestamp = ".$time."
WHERE timestamp = (SELECT MIN(timestamp))
它会更新所有行! 为什么? 我该怎么做我想要的?
当SELECT
-subquery在WHERE
-clause中时,它会锁定表,因此更新无法通过。 只需使用JOIN
UPDATE summoners_shell AS s1
JOIN (SELECT MIN(timestamp) AS mt FROM summoners_shell) AS mt ON (s1.timestamp = mt.mt)
SET
summonerId = ".$s.",
timestamp = ".$time."
如果这不是拼写错误,则可能此查询将解决您的问题。
UPDATE summoners_shell
SET summonerId=".$s.",
timestamp=".$time."
WHERE timestamp=(
SELECT MIN(timestamp)
FROM
summoners_shell
)
UPDATE summoners_shell SET summonerId=".$s.",timestamp=".$time." WHERE timestamp=(SELECT MIN(timestamp) FROM summoners_shell)
在子查询中添加:
FROM summoners_shell
试试这种方式
UPDATE summoners_shell SET summonerId=".$s.",timestamp=".$time."
WHERE timestamp=(SELECT MIN(timestamp) from summoners_shell)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.