gpt4 book ai didi

mysql - 使用 MySQL 在同一个简单 SELECT 中进行不能作为子查询的多个查询,导致生成单个多行结果

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

我有一个特定的问题,无法通过非常简单的多子查询 SELECT 来解决,如底部所示:采用查询 1

SELECT playername AS Rookie FROM MinecraftMySQL.`lb-players` WHERE onlinetime >= 129600 AND onlinetime < 648000 ORDER BY playername;

返回结果如下

+------------------+
| Rookie |
+------------------+
| _Golden_Apple |
| _MineTrick_ |
+------------------+

(只是整个结果的一部分)和查询 2

SELECT playername AS Eager FROM MinecraftMySQL.`lb-players` WHERE onlinetime >= 648000 AND onlinetime < 1296000 ORDER BY playername;

返回类似(只是整个结果的一部分)

+-----------------+
| Eager |
+-----------------+
| 1Herofox |
| 1lyndon |
+-----------------+

这个想法是将这些列组合起来得到如下所示的内容:

+------------------+-----------------+
| Rookie | Eager |
+------------------+-----------------+
| _Golden_Apple | 1Herofox |
| _MineTrick_ | 1lyndon |
+------------------+-----------------+

类似的查询

SELECT
(SELECT playername FROM MinecraftMySQL.`lb-players` WHERE onlinetime >= 129600 AND onlinetime < 648000) AS Rookie,
(SELECT playername FROM MinecraftMySQL.`lb-players` WHERE onlinetime >= 648000 AND onlinetime < 1296000) AS Eager
;

导致 1242 (21000):子查询返回超过 1 行。谷歌搜索是一个问题,因为我不知道该用什么词;使用过

mysql merge subqueries that return multiple rows
mysql multiple columns in result from subqueries
mysql select multiple queries as columns

只是为了得到一些完全不同的东西。

结果大多仅供人类查看,行与其他列无关,所以用什么手段来合并这些列并不重要,只要性能不下降太多即可;鉴于它们根本不相关,使得 JOIN 看起来像是错误的工具。

这就是我的理解停止的地方。

最佳答案

您正在寻找UNION:

SELECT playername, 'Rookie' as Rank
FROM MinecraftMySQL.`lb-players`
WHERE onlinetime >= 129600 AND onlinetime < 648000
UNION
SELECT playername, 'Eager' as Rank
FROM MinecraftMySQL.`lb-players`
WHERE onlinetime >= 648000 AND onlinetime < 1296000
ORDER BY playername;

关于mysql - 使用 MySQL 在同一个简单 SELECT 中进行不能作为子查询的多个查询,导致生成单个多行结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30697956/

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