ThearchyHelios
4557e72c8e
SQL 差异说明第 3 轮补充:按唯一键关联又没用到的 LEFT JOIN 去掉,解析时换了写法又没留位置的函数名不在语法树上判等价,说法照原文写列
- 按主键 / 唯一约束关联、关联进来的表在 ON 之外没用到的 LEFT JOIN(左边每一行正好关联上一行或补空)去掉,结果
怕不怕重复都一样;给了表结构时「按主键关联 users」和「user_id IN (SELECT id FROM users)」不再说成「A 关联了
users 表,B 没有关联它」(没给表结构时关联可能把行复制,这句话是对的,照说)。schema_cache 的 unique 也读进来。
- 原文写的函数名在重新生成时不见了、又没有哪个节点记下它(PostgreSQL 的 DATE_PART 解析成 EXTRACT、不留位置;
date_part 返回浮点数、EXTRACT 返回 numeric),这条语句不在语法树上判等价;CAST 一类(x::INT、MySQL 的
CONVERT(x, CHAR))不算。
- 规范化按关联条件换成同一列之后,差异说明给人看原文写的那一列(「A 按 users.id 分组」不写成 orders.user_id)。
- 留着的 HAVING TRUE 不说成「分组后只保留 TRUE 的组」(读不懂、也没说到真正的不同),只给兜底。
- _finish 的说明按现在的先后重写。
测试:按主键关联的 LEFT JOIN 收进 _SAME_SCHEMA_R3(不是唯一键、后面还接着别的表的进 _DIFF_R3),DATE_PART 进
REGRESSIONS_R3,补「按主键关联对 IN 子查询」的说法测试。
2026-10-05 14:32:07 +08:00
..
2026-10-05 14:32:07 +08:00
2026-10-04 23:40:20 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-25 15:20:46 +08:00
2026-09-30 08:05:15 +08:00
2026-09-29 05:26:34 +08:00
2026-10-04 12:03:14 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 18:05:33 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 09:48:16 +08:00
2026-09-17 18:29:16 +08:00
2026-09-30 08:05:15 +08:00
2026-10-04 02:19:26 +08:00
2026-10-04 02:19:26 +08:00
2026-10-04 01:24:50 +08:00
2026-10-04 01:07:35 +08:00
2026-10-03 12:35:47 +08:00
2026-10-03 11:01:04 +08:00
2026-10-04 03:38:31 +08:00
2026-10-04 01:07:15 +08:00
2026-10-04 02:00:17 +08:00
2026-10-03 11:09:09 +08:00
2026-10-04 01:31:16 +08:00
2026-10-04 02:19:26 +08:00
2026-10-04 02:19:26 +08:00
2026-10-03 12:14:17 +08:00
2026-09-29 11:10:53 +08:00
2026-09-30 08:05:15 +08:00
2026-09-24 23:15:19 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 10:04:52 +08:00
2026-09-28 02:42:40 +08:00
2026-09-30 08:05:15 +08:00
2026-10-04 11:07:40 +08:00
2026-10-04 11:10:28 +08:00
2026-09-20 22:52:28 +08:00
2026-09-29 11:10:53 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-29 19:41:27 +08:00
2026-09-30 08:05:15 +08:00
2026-09-27 23:37:32 +08:00
2026-09-27 10:16:32 +08:00
2026-10-04 11:13:12 +08:00
2026-10-04 01:09:12 +08:00
2026-09-25 15:41:30 +08:00
2026-10-04 11:28:49 +08:00
2026-09-30 18:05:33 +08:00
2026-09-27 10:16:32 +08:00
2026-09-30 08:05:15 +08:00
2026-10-05 00:26:04 +08:00
2026-09-27 23:37:32 +08:00
2026-09-30 08:05:15 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 14:38:10 +08:00
2026-09-18 09:39:24 +08:00
2026-10-01 13:42:04 +08:00
2026-09-28 11:47:23 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-04 12:03:14 +08:00
2026-10-04 12:27:38 +08:00
2026-09-29 05:26:34 +08:00
2026-09-29 05:26:34 +08:00
2026-09-30 08:05:15 +08:00
2026-10-04 02:35:33 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 15:03:31 +08:00
2026-10-01 13:42:04 +08:00
2026-09-30 08:05:15 +08:00
2026-10-01 13:42:04 +08:00
2026-09-30 08:05:15 +08:00
2026-10-04 11:02:06 +08:00
2026-09-25 14:33:56 +08:00
2026-10-02 07:38:44 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 10:04:52 +08:00
2026-09-30 08:05:15 +08:00
2026-09-27 10:16:32 +08:00
2026-09-30 08:05:15 +08:00
2026-09-27 10:16:32 +08:00
2026-10-05 01:18:03 +08:00
2026-10-01 13:42:04 +08:00
2026-10-03 09:30:50 +08:00
2026-09-28 11:47:23 +08:00
2026-09-28 11:47:23 +08:00
2026-10-04 23:40:20 +08:00
2026-09-25 15:30:32 +08:00
2026-09-29 16:07:19 +08:00
2026-10-02 14:38:10 +08:00
2026-09-30 10:04:52 +08:00
2026-09-30 10:04:52 +08:00
2026-09-30 10:04:52 +08:00
2026-09-30 08:05:15 +08:00
2026-09-27 10:16:32 +08:00
2026-09-28 11:47:45 +08:00
2026-09-25 12:47:07 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-27 10:16:32 +08:00
2026-10-04 01:08:42 +08:00
2026-10-04 02:17:32 +08:00
2026-10-03 09:36:20 +08:00
2026-10-03 10:40:47 +08:00
2026-09-28 11:47:23 +08:00
2026-09-30 11:19:25 +08:00
2026-09-30 08:05:15 +08:00
2026-10-01 13:42:04 +08:00
2026-09-25 23:14:50 +08:00
2026-09-30 08:05:15 +08:00
2026-10-04 12:27:38 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 14:38:10 +08:00
2026-10-02 14:38:10 +08:00
2026-10-03 09:36:20 +08:00
2026-10-02 14:38:10 +08:00
2026-10-02 14:38:10 +08:00
2026-10-02 14:38:10 +08:00
2026-09-30 08:05:15 +08:00
2026-10-04 02:52:43 +08:00
2026-09-28 21:20:04 +08:00
2026-09-30 08:05:15 +08:00
2026-09-25 14:44:56 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-01 22:00:07 +08:00
2026-10-01 22:00:07 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-01 22:00:07 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 14:38:10 +08:00
2026-10-02 07:38:44 +08:00
2026-10-01 22:00:07 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-01 22:00:07 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-09-30 08:05:15 +08:00
2026-10-04 11:28:23 +08:00
2026-10-04 12:28:07 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-04 11:33:09 +08:00
2026-10-04 11:28:23 +08:00
2026-09-30 10:04:52 +08:00
2026-09-30 15:03:31 +08:00
2026-09-30 08:05:15 +08:00
2026-10-04 02:24:49 +08:00
2026-10-04 02:33:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-05 01:18:03 +08:00
2026-10-02 07:38:44 +08:00
2026-09-26 23:11:31 +08:00
2026-10-05 01:18:43 +08:00
2026-10-05 00:07:07 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-27 23:37:32 +08:00
2026-09-27 10:16:32 +08:00
2026-10-04 01:52:24 +08:00
2026-09-27 23:37:32 +08:00
2026-10-04 23:40:20 +08:00
2026-09-30 08:05:15 +08:00
2026-09-25 16:05:14 +08:00
2026-10-02 07:38:44 +08:00
2026-10-05 14:19:55 +08:00
2026-09-29 05:26:34 +08:00
2026-09-25 14:44:56 +08:00
2026-10-05 14:32:07 +08:00
2026-10-04 02:19:26 +08:00
2026-10-01 13:42:04 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-01 22:00:07 +08:00
2026-09-30 08:05:15 +08:00
2026-09-26 23:11:31 +08:00
2026-09-28 11:47:23 +08:00
2026-09-28 21:20:04 +08:00
2026-09-18 17:57:20 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-03 11:09:09 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-27 10:16:32 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-05 01:46:55 +08:00
2026-10-05 00:06:03 +08:00
2026-10-05 00:06:03 +08:00
2026-09-29 05:26:34 +08:00
2026-09-30 09:48:16 +08:00
2026-09-26 23:11:31 +08:00
2026-09-28 02:42:40 +08:00
2026-10-01 22:00:07 +08:00
2026-10-01 13:42:04 +08:00