MySQL DISTINCT 返回不太明显的结果
MySQL DISTINCT returning not so distinct results
美好的一天,
我对 MySQL Distinct 有一个小问题。
在我的系统中尝试以下查询:
SELECT DISTINCT `booking_id`, `booking_ticket`, `booking_price`, `bookingcomment_id`, `bookingcomment_message` FROM `mysystem_booking`
LEFT JOIN `mysystem_bookingcomment` ON `mysystem_booking`.`booking_id` = `mysystem_bookingcomment`.`bookingcomment_link`
WHERE `booking_id` = 29791
重点是像29791这样的预订添加了很多评论。
比方说 10。然后当 运行 上述查询时,我看到 10 个结果而不是一个。
这不是 DISTINCT 应该工作的方式。
我只是想知道是否有任何意见。如果评论 ID 不为 0,则有评论。当然,我可以将 COUNT(blabla) 添加为 comment_number,但这是一个完全不同的故事。现在对我来说,我只想让这个语法正确。
您可以尝试以下 - 使用 case when 表达式
SELECT DISTINCT `booking_id`, `booking_ticket`, `booking_price`, `bookingcomment_id`,
case when `bookingcomment_message`<>'0' then 'No' else 'Yes' end as comments
FROM `mysystem_booking`
LEFT JOIN `mysystem_bookingcomment` ON `mysystem_booking`.`booking_id` = `mysystem_bookingcomment`.`bookingcomment_link`
WHERE `booking_id` = 29791
您可以尝试在此处进行汇总,以查找哪些预订至少有一条相关评论:
SELECT
b.booking_id,
b.booking_ticket,
b.booking_price
FROM mysystem_booking b
LEFT JOIN mysystem_bookingcomment bc
ON b.booking_id = bc.bookingcomment_link
WHERE
b.booking_id = 29791
GROUP BY
b.booking_id
HAVING
COUNT(bc.bookingcomment_link) > 0;
请注意,根据您的 MySQL 服务器模式,您可能还需要将 booking_ticket
和 booking_price
列添加到 GROUP BY
子句中以获得上述查询至 运行.
美好的一天,
我对 MySQL Distinct 有一个小问题。 在我的系统中尝试以下查询:
SELECT DISTINCT `booking_id`, `booking_ticket`, `booking_price`, `bookingcomment_id`, `bookingcomment_message` FROM `mysystem_booking`
LEFT JOIN `mysystem_bookingcomment` ON `mysystem_booking`.`booking_id` = `mysystem_bookingcomment`.`bookingcomment_link`
WHERE `booking_id` = 29791
重点是像29791这样的预订添加了很多评论。 比方说 10。然后当 运行 上述查询时,我看到 10 个结果而不是一个。
这不是 DISTINCT 应该工作的方式。 我只是想知道是否有任何意见。如果评论 ID 不为 0,则有评论。当然,我可以将 COUNT(blabla) 添加为 comment_number,但这是一个完全不同的故事。现在对我来说,我只想让这个语法正确。
您可以尝试以下 - 使用 case when 表达式
SELECT DISTINCT `booking_id`, `booking_ticket`, `booking_price`, `bookingcomment_id`,
case when `bookingcomment_message`<>'0' then 'No' else 'Yes' end as comments
FROM `mysystem_booking`
LEFT JOIN `mysystem_bookingcomment` ON `mysystem_booking`.`booking_id` = `mysystem_bookingcomment`.`bookingcomment_link`
WHERE `booking_id` = 29791
您可以尝试在此处进行汇总,以查找哪些预订至少有一条相关评论:
SELECT
b.booking_id,
b.booking_ticket,
b.booking_price
FROM mysystem_booking b
LEFT JOIN mysystem_bookingcomment bc
ON b.booking_id = bc.bookingcomment_link
WHERE
b.booking_id = 29791
GROUP BY
b.booking_id
HAVING
COUNT(bc.bookingcomment_link) > 0;
请注意,根据您的 MySQL 服务器模式,您可能还需要将 booking_ticket
和 booking_price
列添加到 GROUP BY
子句中以获得上述查询至 运行.