我正在尝试使用子查询向Mysql结果添加列, 假设我有一张桌子'汽车'和一张桌子'汽车使用' Table Cars有一列“serial_number”,而Cars使用表也有一列“serial_number”: 所以我想生成一个结果,汽车名称作为第一列,汽车使用作为第二列:
Table cars:
-model
-serial_number
Table carsusage
-date
-serial_number
我想要实现的目标如下:
Model | Usage count
--------------------
|bar | 1500 |
|foo | 700 |
理想情况下,我需要一个子查询,在查询汽车表时,将查询吐出到汽车使用表计数:
SELECT model, serial_number AS sn,(SELECT COUNT(serial_number) FROM cars_usage WHERE serial_number=sn) FROM cars;
所以基本上我想使用serial_number AS sn作为局部变量,并将count操作的结果添加为第二列。 有什么建议? 在这里查询数据库没有多少经验。
THX
答案 0 :(得分:1)
为什么不尝试像
这样的东西SELECT model,
serial_number AS sn,
(SELECT COUNT(serial_number) FROM cars_usage cu WHERE cu.serial_number=c.serial_number)
FROM cars c;
您为表提供别名,然后在字段前加上别名。
你也可以尝试LEFT JOIN(请注意内连接,因为如果没有使用,它将不会返回该车的0条目。)
select c.model,
c.serialnumber sn,
count(cu.*)
from cars c LEFT join
carsusage cu on c.serial_number=cu.serial_number
GROUP BY c.model,
c.serialnumber
答案 1 :(得分:1)
如果您想要按序列号使用:
select model, serial_number, count(*) from cars inner join carsusage on cars.serial_number=carsusage.serial_number where cars.serial_number=$var group by 1,2
或者如果您想要按模型使用:
select model, count(*) from cars inner join carsusage on cars.serial_number=carsusage.serial_number where cars.serial_number=$var group by 1