我有两个表:
一种
Aid: 1
Aid: 2
Aid: 3
乙
Bid: 1 - Aid: 1 - qty: 2
Bid: 2 - Aid: 1 - qty: 2
Bid: 3 - Aid: 1 - qty: 5
Bid: 4 - Aid: 2 - qty: 3
Bid: 5 - Aid: 2 - qty: 2
Bid: 6 - Aid: 2 - qty: 2
我如何才能通过SQL查询获取仅具有表B qty = 2的表A行?
预期结果是:
Aid: 1
Aid: 2
我已经试过了:
Select A.Aid FROM A INNER JOIN B ON A.Aid = B.Aid WHERE B.qty = 2
但是,这给了我比我所需更多的结果:
Aid: 1
Aid: 1
Aid: 2
Aid: 2
是的,我不在乎出价是多少。有任何想法吗?
最佳答案
您需要按Aid
分组
Select
A.Aid
FROM A
INNER JOIN B ON A.Aid = B.Aid
WHERE B.qty = 2
GROUP BY A.Aid
注意:
GROUP BY A.Aid
确保每个A.Aid
最多有一个条目编辑:
使用
DISTINCT
:SELECT
DISTINCT A.Aid
FROM A
INNER JOIN B ON A.Aid = B.Aid
WHERE B.qty = 2
注意:
DISTINCT
删除最终结果集中的重复行。关于mysql - 如何使用SQL一对多关系?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38863508/