我如何加入MySQL中的计数?
如果我有两张桌子,其中一张是: 汽车 其中id是汽车id号,制造商是汽车制造商 另一个是 购买我如何加入MySQL中的计数?,mysql,sql,join,count,Mysql,Sql,Join,Count,如果我有两张桌子,其中一张是: 汽车 其中id是汽车id号,制造商是汽车制造商 另一个是 购买 | CUSTID | CARID | ------------------ | 1 | 1 | | 1 | 4 | | 1 | 6 | | 2 | 1 | | 2 | 2 | | 2 | 4 | | 2 | 6 | | 3 | 2 | | 4 |
| CUSTID | CARID |
------------------
| 1 | 1 |
| 1 | 4 |
| 1 | 6 |
| 2 | 1 |
| 2 | 2 |
| 2 | 4 |
| 2 | 6 |
| 3 | 2 |
| 4 | 5 |
| 4 | 2 |
其中custid是客户的id,carid是特定汽车的id
有没有办法将两者结合起来,然后找出哪些客户购买了所有的Hondas
?尝试以下查询:
select P.CustID
from purchase P
inner join CAR C on P.CarID=C.CarID
WHERE C.Maker like '%Honda%'
group by CustID
having count(P.CarID)=
(select count(*) from CAR C where C.Maker like '%Honda%')
您需要使用
CarID
连接两个表,使用CustID
将其分组,并需要使用HAVING
子句来获取CarID位于1,4,6中的所有记录。此处HAVING
子句中的3
表示龋齿的数量(即1、4和6)
或者直接使用名称代替ID:
SELECT P.CustID, COUNT(CarID)
FROM Purchase P
JOIN Car C
ON P.Carid = C.ID
WHERE Maker = 'Honda'
GROUP BY CustID
HAVING COUNT(CarID) = 3;
要获取计数(例如,在本例中为3),请使用此查询
SELECT COUNT(Maker) FROM Car WHERE Maker = 'Honda';
因此,整个查询可以如下所示:
输出:
╔════════╦══════════════╗
║ CUSTID ║ COUNT(CARID) ║
╠════════╬══════════════╣
║ 1 ║ 3 ║
║ 2 ║ 3 ║
╚════════╩══════════════╝
- 看
- 查看更多值
SELECT A.*, B.*, C.* FROM purchase AS A
INNER JOIN(customer AS B) ON(A.cust_id = B.cust_id)
INNER JOIN(car AS C) ON(A.car_id = C.car_id)
WHERE A.car_id = '1'
我假设您有
customer
表。请记住,purchase
表必须有一个像purchase\u id
这样的主字段。而其中A.car\u id='1'
这是一个条款,您的本田id是1
这只是一个假设列表,如果这不是一个完整的列表呢?@Luv-LIKE
在我们有特定名称时不应使用(例如,在本例中为本田)。当我们有Maker
name@hims056时,这不会给你带来预期的结果,但是HeroHonda
不是汽车制造商
@Luv-不要去现实世界,我只是给你举个例子。
SELECT P.CustID, COUNT(CarID)
FROM Purchase P
JOIN Car C
ON P.Carid = C.ID
WHERE Maker = 'Honda'
GROUP BY CustID
HAVING COUNT(CarID) = (SELECT COUNT(Maker) FROM Car WHERE Maker = 'Honda');
╔════════╦══════════════╗
║ CUSTID ║ COUNT(CARID) ║
╠════════╬══════════════╣
║ 1 ║ 3 ║
║ 2 ║ 3 ║
╚════════╩══════════════╝
SELECT A.*, B.*, C.* FROM purchase AS A
INNER JOIN(customer AS B) ON(A.cust_id = B.cust_id)
INNER JOIN(car AS C) ON(A.car_id = C.car_id)
WHERE A.car_id = '1'