案例说明
更新时间: 2026-04-02 15:48:19
阅读 28
相关SQL语句说明
本案例中,使用如下的查询语句:
SELECT *
FROM (
SELECT *
FROM order_main om
LEFT JOIN order_detail od ON om.order_id = od.order_id
WHERE om.order_status IN (1, 2, 3)
AND om.create_time >= '2025-01-01 00:00:00'
AND om.user_id IN (
SELECT user_id
FROM user_info
WHERE user_level >= 2
AND is_active = 1
)
) AS order_full
LEFT JOIN product_info pi ON order_full.product_id = pi.product_id
WHERE pi.is_on_sale = 1
ORDER BY order_full.create_time DESC, order_full.order_id DESC
LIMIT 0, 20;
代码优化说明
优化后的代码如下:
SELECT *
FROM (
SELECT *
FROM order_main om
LEFT JOIN order_detail od ON om.order_id = od.order_id
WHERE om.order_status IN (1, 2, 3)
AND om.create_time >= unix_timestamp('2025-01-01 00:00:00')
AND om.user_id IN (
SELECT user_id
FROM user_info
WHERE user_level >= 2
AND is_active = 1
)
AND om.action_id > 1 AND om.action_id < 100
) AS order_full
LEFT JOIN product_info pi ON order_full.product_id = pi.product_id
WHERE pi.is_on_sale = 1
ORDER BY order_full.create_time DESC, order_full.order_id DESC
LIMIT 0, 20;
在对话框中,自然语言描述的改写要求是:增加action_id大于1小于100的筛选条件,创建时间改为时间戳。
如下为改写说明:
- 增加筛选条件:
- 位置:WHERE子句中
- 原因:用户要求增加action_id大于1小于100的筛选条件。
- 改写:在WHERE子句中添加条件
AND om.action_id > 1 AND om.action_id < 100。
- 修改时间格式:
- 位置:第2行
om.create_time >= '2025-01-01 00:00:00' - 原因:用户要求将创建时间改为时间戳。
- 改写:将字符串格式的时间条件改为时间戳格式
om.create_time >= unix_timestamp('2025-01-01 00:00:00')。
代码改写效果截图

文档反馈
以上内容对您是否有帮助?