将列添加到MySQL结果中

时间:2013-09-10 08:50:48

标签: mysql sql database

我正在尝试使用子查询向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

2 个答案:

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