sql语句将两个查询结果并列输出

坦白说,使用UNION ALL组合两个查询结果的关键是列名、列号、数据类型必须匹配。

我们先来说说最重要的事情。
去年我们运行Ecommerce Report项目时,直接使用UNION ALL导出两个数据库的结果都报错。
由于一个表有一个额外的“时间戳”列,而另一个表只有一个“日期”列,因此 SQL 立即崩溃 - 列名和列数不匹配。
这种困境应该提前检查。
还有一点,比如你有表A(INT ID, VARCHAR NAME)和表B(INT ID, VARCHAR NAME),使用UNION ALL可以秒级合并,但是使用UNION会自动去重——去年老板坚持用UNION去重,结果就乱了。
最终发现两个表中name列的字符集不同。
还有另一个重要的细节。
UNION 默认按词法顺序排序。
如果要按时间降序排列,则必须添加 ORDER BY 子句。
别傻了,直接用UNION ALL来写吧。

一开始以为UNION ALL和UNION没有什么区别,后来发现不对劲。
例如,当我去年运行批处理作业时,我使用 UNION ALL 在几秒钟内获得结果,但使用 UNION 速度慢了三倍。
当数据量很大时,这种差异可以挽救生命。
等等,还有一件事。
某些 DBMS 为 UNION ALL 设置了参数。
例如,Oracle 的 UNION ALL 运算符默认会删除重复项,但可以通过参数进行更改 - 没有多少人注意到这一点。

建议先写一个简单的版本,使用UNION ALL,运行后再考虑UNION去重,但是记住列类型一定要匹配!

在sql中desc有哪些用法?

记得以前帮同事修旧系统时,桌子结构就像一堆麻将牌一样混乱。
他输入DESC users,屏幕一闪,列名、类型、索引全部出现。
他眼睛一亮,现在他说他明白桌子是怎么碎的了。
那一年是2 02 1 年,在公司的旧办公室里,阳光从窗户射进来,照在打印的结构桌子上,有点令人惊叹。
等等,还有别的事。
稍后,DESC 与 ORDER BY 一起使用,以从最高金额到最低金额查看特定销售记录。
他说通过这种方式很容易获得非正式信息。
突然想到DESC确实好用,但是有时候看文档却忘记了原来还可以这么玩。