gpt4 book ai didi

mysql union 结果中的错误列

转载 作者:行者123 更新时间:2023-11-29 02:02:57 27 4
gpt4 key购买 nike

我在使用 union 时得到了错误的列名。

这就是我所做的,我有两个非常大的表,它们具有相同的结构和不同的记录,所以就在这里。

mysql> select * from e18 where `15` like '%car%' limit 1;
+------+------+----+------+------+------+------+------+------+------+------+------+------+------+------+-------------+------+------+------+------+------+------+--------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-----------+
| id | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
+------+------+----+------+------+------+------+------+------+------+------+------+------+------+------+-------------+------+------+------+------+------+------+--------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-----------+
| 2730 | 2730 | 18 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | cars: stuff | NULL | NULL | NULL | NULL | NULL | NULL | 5 1 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | yy |
+------+------+----+------+------+------+------+------+------+------+------+------+------+------+------+-------------+------+------+------+------+------+------+------+--------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-----------+
1 row in set

mysql> (select * from e8 where `15` like '%car%') union
(select * from e10 where `15` like '%car%') union
(select * from e18 where `15` like '%car%') limit 1;");
+------+------+----+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------+------+------+------+------+------+------+------+--------+------+------+------+------+------+------+------+------+------+------+------+------+------+-----------+
| id | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 15 |
+------+------+----+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------+------+------+------+------+------+------+------+--------+------+------+------+------+------+------+------+------+------+------+------+------+------+-----------+
| 2730 | 2730 | 18 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | cars: stuff | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 5 1 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | yy |
+------+------+----+------+------+------+------+------+------+------+------+------+------+------+------+------+-------------+------+------+------+------+------+------+------+--------+------+------+------+------+------+------+------+------+------+------+------+------+------+-----------+
1 row in set

在这种情况下,Union all 和 union 返回相同的结果。

只有一行单词部分是“car”,它在表e18中。

出于某种原因,我使用 us 得到的结果中的列名称被搞乱了,看起来我遗漏了什么,知道它是什么吗?

提前致谢。

最佳答案

Union 按列 位置 而非名称工作。但是你没有指定列位置,因为你做了 * 所以它是按照数据库选择的某种顺序,但不是你选择的。

最终结果集的名称是联合中第一个查询中的列的名称。

解决方法很简单:写出您想要的所有列的名称,并确保所有三个查询之间的顺序保持一致。

列不是按名称排序的(因此重命名列对您没有帮助),顺序是数据库中的一些内部顺序。

使用 * 被认为是不好的做法:你不知道你得到了什么,如果你只需要一些列然后使用 * 检索更多数据然后必要的,使事情变慢。

顺便说一句,像这样(按数字)命名列是非常糟糕的编程习惯。你到底是怎么把事情弄直的?你的列有数字,你的表有数字。您是否正在尝试编写混淆代码?为了确保没有其他人可以处理您的代码?因为如果你是,这是一种方法。

关于mysql union 结果中的错误列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11714577/

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