作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下查询返回一列值:
SELECT CONCAT(
from_unixtime(lastSaleTime/1000, '%Y-%d-%m %h:%i:%s.'),
CAST(EXTRACT(MICROSECOND FROM from_unixtime(lastSaleTime/1000))/1000
AS SIGNED)
) FROM IEX_Tick;
如何将此列复制到同一表中的现有列?
最佳答案
我相信子查询可以:
UPDATE IEX_Tick SET SomeColumn = (
SELECT CONCAT(
from_unixtime(lastSaleTime/1000, '%Y-%d-%m %h:%i:%s.'),
CAST(EXTRACT(MICROSECOND FROM from_unixtime(lastSaleTime/1000))/1000 AS SIGNED)
) FROM IEX_Tick;
)
编辑:
(回应 this comment)
经过一些研究,我发现,尽管上面建议的解决方案是有效的 SQL
,它不是更新表的受支持方式 MySQL
.
我从 Stack Overflow 上的各种相关帖子(例如 this 和 this )收集的信息表明 MySQL
限制这些类型的 UPDATE
查询:
... because your update could be cyclical… what if updating that record causes something to happen which made the WHERE condition FALSE? You know that isn’t the case, but the engine doesn’t. There also could be opposing locks on the table in the operation.
因此,一个可行的替代方案有助于避免 MySQL
设置的这种任意限制。是使用另一个子查询,这次在你的FROM
子句,如下图:
UPDATE IEX_Tick SET SomeColumn = (
SELECT CONCAT(
from_unixtime(lastSaleTime/1000, '%Y-%d-%m %h:%i:%s.'),
CAST(EXTRACT(MICROSECOND FROM from_unixtime(lastSaleTime/1000))/1000 AS SIGNED)
) FROM (
SELECT * FROM IEX_Tick AS SomeName
);
)
注意:我个人会避免使用 SELECT * FROM IEX_Tick
,特别是如果 IEX_Tick
有很多列。优化子查询的好方法是仅使用所需的列。
关于java - 如何将查询结果添加到列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48030095/
我是一名优秀的程序员,十分优秀!