0

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

逻辑是:

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

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

4

1 回答 1

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

返回 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)
于 2014-07-02T16:09:37.720 回答