注册 登录
  • 欢迎访问"运维那点事",推荐使用Google浏览器访问,可以扫码关注本站的"微信公众号"。
  • 如果您觉得本站对你有帮助,那么可以扫码捐助以帮助本站更好地发展。

SQL编程:不常见SQL语句–持续更新

MySQL SQL 彭东稳 882次浏览 已收录 0个评论

一、统计每个表自增值

根据统计信息用来统计每个表自增字段当前使用量及自增最大值。

效果如下:

二、给查询结果一个序号

首先set一个变量,然后查询时给这个变量赋值并加1就可以了。

注意变量赋值时“=”跟“:=”的区别,其中“=”是用来设置一个变量,而“:=”是用来赋值一个变量,如下:

这里,我们需要先用set设置一个变量。其实也可以把上面这种操作变更为一条语句,使用子查询方式处理。

三、利用CASE语句标识字段属性

使用MySQL CASE语句来标识字段属性,如下:

0标识为女,1标识为男,2标识为保密。

这里需要注意一点,我们这可以拿sex_text字段来进行排序或分组,但是不能拿sex_text字段来做where条件。这是因为SQL执行顺序where在select前面,字段不存在所以无法做条件判断,但是排序或分组在select后面,所以可以使用sex_text字段。

SQL逻辑解析顺序:

四、利用CASE语句更新字段

需求,当条件AGE等于22时,extra赋值为100;当AGE=24时,extra赋值为200。

需要注意一点的是,使用这种方式更新时,虽然会简便SQL编写,但会更新所有记录。会把符合条件的对应值更新,而不符合条件的值更新为NULL,所以谨慎使用。如果想把不符合条件的值更新为指定值,可以加ELSE条件。

五、给查询结果排名

使用子查询方式实现。

结果如下:

六、根据重复行合并多行

测试数据如下:

实现消除重复字段a,且合并字段b的结果集。利用group_concat函数处理,如下SQL:

七、合并结果集

先把测试环境给出来,下面再说需求。

就是把两张表结果集合并到一起, 并且id字段相同的需要合并成一行。如果直接使用union方法处理如下:

显然无法满足我们id字段相同的合并到一起的需求。一个朋友给了下面这种处理方式:

得到的结果集如下:

完美解决了我们的需求。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (2)or分享 (0)
关于作者:

您必须 登录 才能发表评论!