我们需要一个可以跨越两个不同表的SQL查询,并且在WHERE子句(或子选择)中基本上需要一个聚合函数,但我是SQL的新手。基本上,第一个表是订单的标题(只有一个记录),表明订单中有多少个项目。下表显示订单中每个项目的记录。查询需要能够检查表2中是否存在多个记录,而应该只有一个记录。
逻辑是:
SELECT * from table2
JOIN table1 on table1id = table2id
WHERE table1.numberofitems = 1
AND count(table2.products) > 1
显然这不会起作用,因为where子句中有一个聚合。任何人都可以提出任何可行的建议吗?
答案 0 :(得分:1)
子选择可行。或者如果你只需要表2的主键,那么group by也可以。
分组依据示例:
SELECT table2id from table2
JOIN table1 on table1id = table2id
WHERE table1.numberofitems = 1
GROUP BY table2.table2id
HAVING count(table2.products) > 1
使用subselect返回table2的所有列的示例:
SELECT * from table2 t2
JOIN table1 on table1id = table2id
WHERE table1.numberofitems = 1
AND 1 < (SELECT COUNT(table2.products) FROM table2 t2s
WHERE t2.table2id = t2s.table2id)