gpt4 book ai didi

php - 左加入分页(LIMIT)

转载 作者:行者123 更新时间:2023-11-28 23:21:10 24 4
gpt4 key购买 nike

假设我有一个这样的表,具有多对一的关系

表1

  id | name
1 | as
2 | df
3 | gh

  id | othercontents | table1relationship
1 | qw | 1
2 | er | 2
3 | ty | 3
4 | ui | 3

如果我在 Table1 上运行一个选择查询,对 Table2 进行左连接,但将其限制为 3 个结果,我将返回 3 行

1 - 作为 - qw
2 - df - 呃
3 - gh - ty

我愿意

1 - 作为 - qw
2 - df - 呃
3 - gh - [ty, ui]

现在,目前我正在正常选择它,然后自己将其他内容放入一个数组中,以将我的行变成我想要的,但问题仍然是我无法返回我想要的所有行。

从逻辑上讲,我想我想限制为 X 个唯一的 table1.id,而不是只限制为 X 行,但我不知道实现此逻辑的方法(如果可能的话)。

当然,如果我选择数据库中的所有内容然后在 PHP 中对其进行排序,这很容易,但这太密集了,我不想选择 20,000 行只是为了获得大约 10 行。我想解决这个问题的一个 hacky 方法是选择 30 行,然后进行我自己的排序并返回我想要的 10 行,但选择超出我需要的行数对我来说仍然很愚蠢。

也许值得一提,但我正在使用 Symfony3 w/Doctrine 并使用查询生成器。但我不要求复制/粘贴我的问题的答案,而只是插入方向,以便我可以继续实现。

谢谢

最佳答案

这是一个将为您提供结果的查询(如果我理解正确的话)。

SELECT t1.id,t1.name,
CONCAT( IF(sum(1)>1,'[',''), GROUP_CONCAT(t2.othercontents), IF(sum(1)>1,']','')) AS name2
FROM (
SELECT *
FROM table1
LIMIT 3
) as t1
LEFT JOIN table2 t2 on t2.table1relationship = t1.id
GROUP BY t2.table1relationship;

示例

mysql> SELECT * from table1;
+----+------+
| id | name |
+----+------+
| 1 | as |
| 2 | df |
| 3 | gh |
+----+------+
3 rows in set (0,00 sec)

mysql> SELECT * from table2;
+----+---------------+--------------------+
| id | othercontents | table1relationship |
+----+---------------+--------------------+
| 1 | qw | 1 |
| 2 | er | 2 |
| 3 | ty | 3 |
| 4 | ui | 3 |
+----+---------------+--------------------+
4 rows in set (0,00 sec)

结果

mysql> SELECT t1.id,t1.name,
-> CONCAT( IF(sum(1)>1,'[',''), GROUP_CONCAT(t2.othercontents), IF(sum(1)>1,']','')) AS name2
-> FROM (
-> SELECT *
-> FROM table1
-> LIMIT 3
-> ) as t1
-> LEFT JOIN table2 t2 on t2.table1relationship = t1.id
-> GROUP BY t2.table1relationship;
+----+------+---------+
| id | name | name2 |
+----+------+---------+
| 1 | as | qw |
| 2 | df | er |
| 3 | gh | [ui,ty] |
+----+------+---------+
3 rows in set (0,00 sec)

mysql>

关于php - 左加入分页(LIMIT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41534677/

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