mysql仿oracle的decode效果查询
今天偶然在群里看到一个问题,觉得很有意思,想和大家分享一下。这个问题涉及到一段SQL代码,看起来是在MySQL中测试通过的,理论上在MSSQL中也应该能够运行,只是尚未经过实际测试。
让我们看看这段代码是如何创建临时表的:
```sql
CREATE TEMPORARY TABLE tmp (a INT, b INT, c INT);
INSERT INTO tmp VALUES (1, 10, 1), (10, 10, 2), (10, 100, 2);
```
在MySQL中执行的查询语句如下:
```sql
SELECT SUM(CASE WHEN c = '1' THEN A ELSE B END) FROM tmp;
```
这条语句使用了CASE语句来对c列进行条件判断,如果c的值为1,则对a列进行求和,否则对b列进行求和。这种写法在MySQL中是可行的。
而在Oracle中,执行类似的查询时,会使用DECODE函数来替代CASE语句:
```sql
SELECT SUM(DECODE(c, '1', a, b)) FROM tmp;
```
DECODE函数在Oracle中是一种强大的工具,可以用来进行条件判断和数据处理。在这个例子中,DECODE函数根据c列的值来返回a列或b列的值,并进行求和。
除了以上两种写法,还有一种普通的联合查询方式:
```sql
SELECT SUM(d) FROM (
SELECT a AS d FROM tmp WHERE c = 1
UNION
SELECT b AS d FROM tmp WHERE c = 2
);
```
这种查询方式通过创建一个子查询,先筛选出c列为1时a列的值和c列为2时b的值,然后将它们联合在一起进行求和。
这段SQL代码通过不同的查询方式实现了对临时表中数据的处理,根据c列的值来选择对a列或b列进行求和操作。虽然这段代码在MySQL中测试通过,但在实际使用中还需要根据实际情况进行调整和测试,以确保在不同的数据库系统中能够正确运行。希望这个例子能给大家带来一些启发和收获!
网站设计
- Indesign设置字符基线偏移、旋转与间距
- 华为新机获入网许可 很有可能命名为G8
- win10系统指纹无法设置提示关闭windows hello然后尝
- thinkpad笔记本怎么使用随机应用地址上网-
- 安装KB3105208后蓝屏怎么办?win10预览版安装KB310
- 安装Win8.1系统时提示“Windows安装程序无法将win
- 戴尔笔记本VT怎么开启- 处理器虚拟化技术开启方
- CSS实现连续数字和英文的自动换行的方法
- 什么是万卡? 小米发布会或将发布小米万卡·O
- 电脑笔记本的键盘如何除尘-
- Illustrator(AI)利用渐变网格工具来设计制作漂亮的
- 电脑通过命令更新IP地址和DNS服务器地址的方法
- 光盘里面的音乐文件怎么转换成mp4格式?
- ai如何将线条变成圆头-
- Win10侧边栏打不开在有些时候无法打开如何解决
- Win8.1安装软件提示所注册的密钥集无效导致无法