怎么在 MySQL 的左连接中获取关联行的计数?

本教程将介绍如何在 MySQL 的左连接中获取关联行的计数?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

怎么在 MySQL 的左连接中获取关联行的计数? 教程 第1张

问题描述

我有两个表,一个 vehicle 表,其中包含列:

id

股票

年份

制作

模型

和一个带有列的 images 表:

id

vehicle_id

名称

标题

默认 tinyint(1)

我正在尝试列出车辆的信息、默认图像以及车辆拥有的图像总数.目前我正在使用以下 SELECT 语句:

SELECT vehicle.id, vehicle.stock, vehicle.year,
 vehicle.make, vehicle.model, images.name,
 COUNT(images.id)
FROM vehicle
LEFT JOIN images
ON vehicle.id = images.vehicle_id

我最初使用的是:

ON vehicle.id = images.vehicle_id AND images.default = 1

但是根据数据库中是否存在默认图像,图像计数将仅为 1 或 0.我曾尝试使用 UNION 和其他 SELECT 语句,但我仍然无法获得正确的结果.我需要使用两个 SELECT 语句还是有其他方法可以使用 JOINUNION 来处理它?

推荐答案

SELECT 
 `vehicle`.`id`, 
 `vehicle`.`stock`, 
 `vehicle`.`year`, 
 `vehicle`.`make`, 
 `vehicle`.`model`, 
 `images`.`name`,
 (
  SELECT COUNT(*) 
  FROM `images` 
  WHERE `vehicle_id` = `vehicle`.`id`
 ) AS `image_count`
FROM `vehicle`
LEFT JOIN `images`
ON `images`.`vehicle_id` = `vehicle`.`id`
WHERE `images`.`default`

好了关于怎么在 MySQL 的左连接中获取关联行的计数?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。