gpt4 book ai didi

php - 使用 CI 事件记录的棘手 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 08:00:59 25 4
gpt4 key购买 nike

我必须编写这个查询,并且我想我需要一些帮助。我将 CodeIgniter(最新版本)与 Mysql 一起使用。

我有一个小表“事件”,其结构如下:

enter image description here

我想要做的是为每个 venue_id 选择 2 个事件。

查询的结果类似于:

Venue_id number 1 : event1, event 2
venue_id number 2 : event 5, event 6

换句话说,只是为了清楚起见。我需要为每个俱乐部选择 2 项事件。

我正在尝试这样的事情:

SELECT * FROM (`events`) GROUP BY `venue_id` LIMIT 2

但我需要按 venue_id 进行分组和限制

有没有办法只通过 sql 查询来做到这一点,或者我应该依靠 php 来解决它?

最佳答案

如果您只需要事件 ID,请使用 group_concat()substring_index():

select e.venue_id, substring_index(group_concat(e.id), ',', 2)
from events e
group by e.venue_id;

如果您想要两个 field 的完整记录,我会采取这种方法:

select e.*
from events e join
(select venue_id, min(id) as minid, max(id) as maxid
from events
group by venue_id
) v
on e.venue_id = v.venue_id and
(e.id = minid or e.id = maxid);

编辑:

以下是在给定 field 获取最多“n”个事件的一种方法:

select e.*
from events e
where n >= (select count(*)
from events e2
where e2.venue_id = e.venue_id and
e2.id <= e.id
);

关于php - 使用 CI 事件记录的棘手 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23840072/

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