类(class,type,country,numGuns,bore,displacement)
船舶(名称,类别,已启动)
战斗(姓名,日期)
结果(船舶,战斗,结果)
Classes关系包括班级名称,类型(战舰的bb或战斗巡洋舰的bc)
SELECT DISTINCT ds1.country FROM (SELECT t2.country FROM Classes t2 WHERE t2.type='bb' INTERSECT SELECT t3.country FROM Classes t3 WHERE t3.type='bc') AS ds1
我得到了结果: 您的查询在主数据库上生成了正确的结果集,但在第二次检查数据库时未通过测试。 *错误的记录数量(更多2)
您的查询结果:
国家
Gt.Britain
日本
答案 0 :(得分:0)
MySQL是否支持INTERSECT命令?
如果不能,您可以将查询重写为JOIN: -
SELECT DISTINCT t2.country
FROM Classes t2
INNER JOIN Classes t3
ON t2.country = t3.country
WHERE t2.type='bb'
AND t3.type='bc'
答案 1 :(得分:0)
SELECT c.country
FROM classes c
WHERE c.type IN ('bc','bb')
GROUP
BY c.country
HAVING COUNT(DISTINCT c.type)=2;
答案 2 :(得分:0)
您可以使用group by with aggregate function来检查是否有任何国家/地区同时拥有这两种类型的船只。
SELECT country
FROM Classes
GROUP BY country
HAVING SUM(case when type='bb' then 1 else 0 end) >= 1
AND SUM(case when type='bc' then 1 else 0 end) >= 1;