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

如何先获取客户列前25个值,再执行WHERE条件等后续SQL操作?

解决方案

要实现先获取前25个客户,再对这些客户执行筛选、分组和排序的逻辑,可以通过子查询或CTE先提取目标客户集合,再基于这个集合完成后续操作,具体实现如下:

方法1:使用子查询

SELECT customer
FROM (
    -- 先提取前25个客户(若需固定顺序,可在子查询中添加ORDER BY,比如ORDER BY customer)
    SELECT DISTINCT TOP 25 customer
    FROM tt
) AS top_customers
JOIN tt ON tt.customer = top_customers.customer
WHERE tt.DocNum LIKE '%something%' AND tt.U_NAME NOT LIKE '%something%'
GROUP BY tt.customer
ORDER BY MIN(tt.DocNum) DESC

方法2:使用CTE(公共表表达式)

WITH top_customers AS (
    -- 先提取前25个客户
    SELECT DISTINCT TOP 25 customer
    FROM tt
    -- 可选:若需要确定的前25个客户顺序,添加排序条件,比如 ORDER BY customer ASC
)
SELECT customer
FROM top_customers
JOIN tt ON tt.customer = top_customers.customer
WHERE tt.DocNum LIKE '%something%' AND tt.U_NAME NOT LIKE '%something%'
GROUP BY customer
ORDER BY MIN(tt.DocNum) DESC

关键说明

  • 子查询/CTE部分优先从tt表中取出前25个不重复的客户(如果要取原始表前25行的客户,可去掉DISTINCT)。如果需要固定的前25个客户顺序,建议在子查询/CTE中添加ORDER BY,否则TOP 25返回的结果是随机的。
  • 通过JOIN关联原表后,筛选符合DocNum和U_NAME条件的数据,再按客户分组,最后按MIN(DocNum)降序排序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:02:06