1

我正在尝试使用子查询向 Mysql 结果添加一列,假设我有一个表“Cars”和一个表“Cars usage”表 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 作为局部变量并将计数操作的结果添加为第二列。有什么建议吗?在这里查询数据库没有太多经验。

谢谢

4

2 回答 2

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
于 2013-09-10T08:53:55.667 回答
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
于 2013-09-10T08:54:27.870 回答