条件子查询表无id字段,但sql未校验失败,然后执行以超时结束

执行的sql如下,其中sync_config_item_ext 表无id字段,但是成功执行,以超时结束:
SELECT count(*) FROM sync_log WHERE rsn > (SELECT applied_rsn FROM sync_config_item_ext WHERE id = 42)

超时结束 怎么确定是成功执行了

正常不应该是直接报错无id列吗?

对呀 正常不是应该报错吗?碰到bug了?

explain 看一下

sync_log 这个表里面是不是有id字段。。。。

1 个赞

是滴,有

的确是解析成了 sync_log.id :grimacing:

1 个赞

SQL 写错了呗, id 时 sync_log 表的 id ,数据库没问题

1 个赞

这是bug吧

你每个表加上别名,就没这问题了。。。

1 个赞

不算 bug 吧 , 这种 sql 语法就是允许把外面表的条件写在里面 :rofl:

1 个赞

我还以为子查询里的条件不加别名只能识别成子查询表的字段 :grimacing:

mysql的行为也是用的sync_log.id,但是mysql有warning显示。

tidb是没有的。

2 个赞

:joy:不是bug,我们也遇到过,当时排查了半天。特别神奇~

确实 不算bug。属于脑子没转过来

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。