mysql - UNION有意想不到的结果吗?

标签 mysql sql union

假设我们有:

表1

a (int) | b (int)
--------|--------
1       | 4
2       | 4

表2

c (text)   d (text) 
---------|---------
hoi      | hi

查询:

SELECT * FROM table1 
UNION 
SELECT * FROM table2 

产量

a     | b 
------|--------
1     | 4
2     | 4
hoi   | hi

至少,从我刚刚在 mysql 上运行的查询来看

我期望(1, 4, NULL, NULL)。为什么这不会给出错误?

最佳答案

UNION 只是将一个查询的行附加到另一个查询的行。只要两个查询返回相同数量的列,就不会出现错误。列名始终来自第一个查询。如果数据类型不同,它会找到它们都可以转换为的公共(public)类型;在您的示例中,它将 int 列转换为 text (MySQL 对此很宽松,其他一些数据库要求您使用显式 CAST()调用以使所有内容都为同一类型)。

由于每个查询都返回两列,因此结果包含两列,并使用 table1 中的列名称。

关于mysql - UNION有意想不到的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55695887/

相关文章:

java - JDBC 是否支持准备语句中的 Oracle 提示

javascript - 如何利用有区别的联合来推断函数的返回类型

MySQL - UNION 2 表然后 ORDER BY

mysql - 使用联合左连接和内连接优化查询

mysql - ORDER BY 团体优先权?

java - 连接 3 个或更多表会产生重复的元组

mysql - Spring boot,执行自定义查询

php - 尝试使用 Php-MySQL 从数据库检索视频 URL 并将其显示在浏览器上

mysql - 检查 DAYOFWEEK() 是否存在于日期范围内

php - 在mySQL中动态选择表