SQL查询辅助(子选择或聚合)

时间:2014-07-02 16:04:36

标签: sql aggregate-functions sql-subselect

我们需要一个可以跨越两个不同表的SQL查询,并且在WHERE子句(或子选择)中基本上需要一个聚合函数,但我是SQL的新手。基本上,第一个表是订单的标题(只有一个记录),表明订单中有多少个项目。下表显示订单中每个项目的记录。查询需要能够检查表2中是否存在多个记录,而应该只有一个记录。

逻辑是:

SELECT * from table2 
JOIN table1 on table1id = table2id
WHERE table1.numberofitems = 1
AND count(table2.products) > 1

显然这不会起作用,因为where子句中有一个聚合。任何人都可以提出任何可行的建议吗?

1 个答案:

答案 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)