回答

收藏

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

技术问答 技术问答 232 人阅读 | 0 人回复 | 2023-09-14

我有两个表,一个vehicle带列表:  g) ^4 _+ I# M6 _
id
4 w! y! y# _5 d0 ~stock
! Z$ C2 A; K: K+ }+ ~year
6 b" R3 o. u6 Fmake
6 L- `( V( k$ Y/ O0 T) Pmodel
和images带列表:3 G  H' Z. y2 W4 _% e
id6 _# U( U& A1 v& }
vehicle_id
9 u2 |! c6 o4 i7 \& m# tname
  L7 ]6 V0 s9 @# F5 i/ ^( f7 dcaption/ b4 N* W( u4 g. G
default tinyint(1)
我试图列出车辆的信息,其默认图像和车辆的图像总数。目前,我正在使用以下信息SELECT语句:% X' S# v4 ^/ B1 ]4 O# B
SELECT vehicle.id,vehicle.stock,vehicle.year,   vehicle.make,vehicle.model,images.name,   COUNT(images.id)FROM vehicleLEFT JOIN imagesON vehicle.id = images.vehicle_id我最初用的是:( D! C, G! z- m# c( p+ Z( N
ON vehicle.id = images.vehicle_id AND images.default = 1但根据数据库中是否有默认图像,图像计数将只有1或0。我已经试过了UNION和其他SELECT句子,但还是得不到正确的结果。我需要用两个吗?SELECT是否有其他方法可以使用语句JOIN或处理它UNION?  S6 Y- m8 v) J: m& C
                                                                / P4 W! J3 I( N% {9 d5 X( Z/ T
    解决方案:                                                               
; @+ D+ c* w# h$ s. g0 M                                                                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`
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则