繁体   English   中英

更新具有最小值sql的行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM