假设我有两张桌子,t1和t2。t1有两个字段,一个字段包含名为a的唯一值,另一个字段名为value。表t2有一个不包含名为b的唯一值的字段,以及一个也称为value的字段。现在,如果我使用以下更新查询(这是使用):
UPDATE t1
INNER JOIN t2 ON t1.a=t2.b
SET t1.value=t2.value如果我有以下数据
t1 t2
a | value b | value
------------ ------------
'm' | 0.0 'm'| 1.1
'm'| 0.2然后运行查询,在t1.value中得到什么值?我做了一些测试,但找不到一致的行为,所以我猜它可能只是没有定义。或者这种更新查询是不应该做的?关于我为什么要这样做,有一个很长很无聊的故事,但这与我的询问的技术性质无关。
发布于 2013-08-15 09:14:36
执行您已经指出的查询时,行‘m’的“t1”中的“值”实际上是随机的,因为“t2”具有标识值‘m’的多个行。
除非明确指定要使用最大值(max函数)、最小(min函数)或具有标识‘m’的行集合的其他聚合,否则数据库无法进行定义的选择,因此返回第一次遇到的值,因此行为不一致。
希望这能有所帮助。
https://stackoverflow.com/questions/18249064
复制相似问题