gpt4 book ai didi

mysql - SQL查询-根据计数条件选择记录

转载 作者:可可西里 更新时间:2023-11-01 06:47:06 26 4
gpt4 key购买 nike

标题可能看起来不是很清楚 - 不确定如何在一行中解释问题。

我有3张 table

TOPICVIDEO TOPIC_VIDEO

一个主题可以有一个或两个视频。这些视频要么是示例视频,要么不是。

具有相关列名称的表中的示例数据

主题

TOPIC_ID |         NAME          | COURSE_ID    1    | Excel - Add/Subtract  |     1    2    | Excel - sort          |     1    3    | Excel - filter        |     1    4    | Excel - formulas      |     1VIDEOVIDEO_ID | VIDEO_URL    10   | www.youtube.com?v=123    12   | www.youtube.com?v=345    13   | www.youtube.com?v=567    14   | www.youtube.com?v=879    15   | www.youtube.com?v=443TOPIC_VIDEOTOPIC_VIDEO_ID | TOPIC_ID | VIDEO_ID | IS_SAMPLE          1        |    1    |    10    |    Y      2        |    2    |    12    |    N      3        |    3    |    13    |    N      4        |    3    |    14    |    Y      5        |    4    |    15    |    N

所以我想做的是为给定的类(class)选择所有主题及其相应的视频。现在,如果一个主题有多个视频 - 我想选择 is_sample 为“N”的视频。

如上例 - topic_id 3 有两个 video_id 为 13 和 14 的视频 - 因此应选择 video_id 13。

这是我目前的查询

select topic.*,count(topic.topic_id),video.video_id,topic_video.is_samplefrom topicleft join topic_video ON topic_video.topic_id = topic.topic_idleft join video ON video.video_id = topic_video.video_idwhere course_id=1group by topic.topic_id

所以现在如果计数是 2 - 我想选择带有 is_sample='N' 的记录这可能吗,我怎样才能做到这一点。非常感谢您的宝贵时间

最佳答案

解决这个问题的一种方法是

  • 加入一个按主题计算计数的内联 View 。
  • 使用计数创建一个只连接到 IS_SAMPLE = N 的 case 语句


SELECT * 
FROM topic
LEFT JOIN (SELECT topic_id,
Count(topic_id) t_count
FROM TOPIC_VIDEO
GROUP BY topic_id) t
ON topic.topic_id = t.topic_id
LEFT JOIN topic_video
ON topic_video.topic_id = topic.topic_id
AND TOPIC_VIDEO.IS_SAMPLE = CASE
WHEN t.t_count = 2 THEN 'N'
ELSE TOPIC_VIDEO.IS_SAMPLE
END
LEFT JOIN video
ON video.video_id = topic_video.video_id

DEMO

输出

| TOPIC_ID |                 NAME | COURSE_ID | T_COUNT | TOPIC_VIDEO_ID | VIDEO_ID | IS_SAMPLE |             VIDEO_URL |
-------------------------------------------------------------------------------------------------------------------------
| 1 | Excel - Add/Subtract | 1 | 1 | 1 | 10 | Y | www.youtube.com?v=123 |
| 2 | Excel - sort | 1 | 1 | 2 | 12 | N | www.youtube.com?v=345 |
| 3 | Excel - filter | 1 | 2 | 3 | 13 | N | www.youtube.com?v=567 |
| 4 | Excel - formulas | 1 | 1 | 5 | 15 | N | www.youtube.com?v=443 |

关于mysql - SQL查询-根据计数条件选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11038342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com