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

Oracle SQL中HAVING COUNT查询无结果:如何筛选至少两份副本的艺术品

问题解决方案

先拆解你原SQL的问题:

  • 子查询里的HAVING COUNT(w.copy) > 2是筛选至少3份副本的作品,但你的需求是至少2份,条件本身就不符合要求。
  • 用COUNT(w.copy)会忽略Copy字段为NULL的记录,如果你的Copy字段存在NULL值,统计出的副本数会不准确。改用COUNT(*)更靠谱,它会统计该WorkID下的所有记录(每条记录对应一个副本)。

修正后的SQL:

SELECT w.WorkID, w.Title, w.Copy, w.Medium, w.Description,
       a.FirstName || ' ' || a.LastName AS ArtistFullName
FROM dtoohey.Work w
INNER JOIN dtoohey.artist a ON w.ArtistID = a.ArtistID
WHERE w.WorkID IN (
        SELECT WorkID
        FROM dtoohey.Work
        GROUP BY WorkID
        HAVING COUNT(*) >= 2
        );

如果能确认Copy字段没有NULL值,也可以把COUNT(*)换成COUNT(Copy),但COUNT(*)的兼容性和准确性更强。另外把旧式的逗号连接改成INNER JOIN语法,逻辑更清晰,也符合现代SQL规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:12:39