You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对使用INTERSECT的SQL查询结果按Q_submission_date排序?

解决方案

你原来的查询只从users表获取数据,而Q_submission_date属于Q表字段——结果集里根本没有这个字段,自然没法直接用它排序。要解决这个问题,必须先关联两张表,把需要排序的字段纳入结果集。

推荐写法:用INNER JOIN实现筛选+排序

这种写法逻辑清晰且性能更优,直接关联两张表并同时应用筛选条件:

SELECT u.*, q.Q_submission_date
FROM `users` u
INNER JOIN `Q` q ON u.user_id = q.Q_id
WHERE u.user_level = 'N'
  AND q.Q_test = '-1'
  AND q.Q_dummy != ''
ORDER BY q.Q_submission_date ASC; -- 替换为DESC可实现降序排序

保留IN子查询的替代写法

如果坚持要用IN的逻辑,也可以通过子查询提取Q表的必要字段后再关联:

SELECT u.*, q.Q_submission_date
FROM `users` u
JOIN (
    SELECT Q_id, Q_submission_date
    FROM `Q`
    WHERE Q_test = '-1' AND Q_dummy != ''
) q ON u.user_id = q.Q_id
WHERE u.user_level = 'N'
ORDER BY q.Q_submission_date ASC;

为什么之前用AS操作失败?

AS只是给字段或表设置别名,但你根本没将Q表的Q_submission_date字段引入查询结果集——没有这个字段,再怎么设置别名也无法用它排序。核心是要先通过关联表把需要的字段拿到手,才能进行排序操作。

内容的提问来源于stack exchange,提问作者2WFR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 05:37:20