当前位置: 首页 > 面试题库 >

如何在MySQL的左联接中获得相关行的计数?

盖锐进
2023-03-14
问题内容

我有两个表,一个vehicle带有列的表:

  • id
  • stock
  • year
  • make
  • model

images带有列的表:

  • id
  • vehicle_id
  • name
  • caption
  • default 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语句,或者是否有其他方法可以使用JOIN或处理它UNION


问题答案:
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`


 类似资料:
  • 问题内容: 我有多张表 我正在使用这样的查询: 它按预期工作。但是,我也希望获得每个帖子的评论数。因此,如何修改此查询,以便获得评论数。 有任何想法吗? 问题答案: SELECT post.id, post.title, user.id AS uid, username, COALESCE(x.cnt,0) AS comment_count FROM LEFT JOIN post_user ON

  • 我想添加表示来自其他表的计数的列。 我有三张桌子。 消息 主题 STARS_GIVED 我想以: 主题回顾 所以基本上,我想附上3列唯一值的计数(每个主题中给出的星数,在主题中有消息的唯一用户,以及每个主题中唯一消息的数量)。 我希望最终能够对类别进行筛选(看看两列)。 此外,我希望最终按我加入的计数排序。例如,我将有一个按钮,按“星星的数目”按升序排序,或按“用户的数目”按降序排序,等等。 我试

  • 我有两个问题。两者都很好用: 第二个查询: 联合本: 工作正常,但我想添加左联接: DoSend工作...#1222-使用的SELECT语句具有不同的列数 你能帮我把这件事办好吗?

  • 问题内容: 我有一个网站,该网站将选项存储在多个表中,并根据单个页面提取所有相关选项。此刻,我结束了这样的查询:。这确实不是一个坏问题,但是我必须逐个遍历每个选择结果。 我想将所有这些提取到单个网格中,然后执行类似的操作 如果使用类似的查询,则会结束所有可能的行组合(第一个foo第一栏,第二个foo第二栏,第二个foo第一栏,第二个foo第二栏等)。 有没有一种方法可以执行这样的选择,并且每个元素

  • 下面是我拥有的代码片段: class.block的每个div都有一个data-title属性(每个data-title属性的值不同)。我希望能够在我的匿名函数中访问这个data-title属性。

  • 问题内容: 假设我们有下表t1和t2: 我们希望找到以下结果: 这基本上是右连接与左连接的并集。以下代码有效,但感觉很笨拙: 有没有更好的方法来实现这一目标? 问题答案: