我一直在为以下工作进行SQL工作。我可以使用“ AND”为以下内容编写查询,但我可以在查询中使用“至少”。

查找提供红色部分和绿色部分的供应商的sid。

Select s.sid from suppliers s, catalog c, parts p
where s.sid=c.sid and c.pid=p.pid and p.color='Red'
intersect
Select s.sid from suppliers s, catalog c, parts p
where s.sid=c.sid and c.pid=p.pid and p.color='Green';


如何使用atleast编写类似问题的查询

“找到供应至少两个红色部分和至少两个绿色部分的供应商的建议。”

最佳答案

我个人会避免像第一个回复中那样使用子选择的查询。这是一个使用带有GROUP BY和HAVING子句的查询的解决方案。您只需要计算红色和绿色,然后按具有所需统计信息的供应商过滤在HAVING中即可。请注意,不必连接到供应商表。

SELECT
  c.sid,
  SUM(CASE WHEN p.color='Red' THEN 1 ELSE 0 END) AS redCt,
  SUM(CASE WHEN p.color='Green' THEN 1 ELSE 0 END) AS greenCt
FROM
catalog c
JOIN parts p ON c.pid = p.pid
GROUP BY c.sid
HAVING redCt >= 2 AND greenCt >= 2


http://sqlfiddle.com/#!2/85e8c1/14

关于mysql - 至少在SQL查询中使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27371073/

10-13 02:09