有用的sql笔记(工作总结)
1、查询当前月(数字为0表示当前月份,1表示上个月,-1表示下个月,以此类推)
SELECT DATE_FORMAT((CURDATE() - INTERVAL [数字] MONTH), '%Y-%m') as `date`

2、添加数据库表字段
ALTER TABLE t_performance_group_plan ADD COLUMN submit_approval_time DATETIME DEFAULT NULL COMMENT '提交审批时间' AFTER financial;
3、insert根据select查询结果进行插入
INSERT INTO t_performance_group_detail (group_id, member_name)
SELECT
tp.`id`,
t1.`nick_name`
FROM
sys_user t1
4、查询结果中根据A字段分组,将B字段合并展示(使用函数 group_concat() )

SELECT
'FNS' AS `source_code`,
CONCAT(`am`.`month_id`, '-out') AS `source_trx_id`,
`am`.`month_id` AS `month_id`,
`ai`.`sp_no` AS `approval_number`,
`tu`.`NAME` AS `applicant_by_name`,
`tu`.`user_code` AS `applicant_by`,
`td`.`dept_name` AS `dept_name`,
`td`.`dept_id` AS `dept_id`,
`ai`.`apply_time` AS `apply_time`,
(
CASE
WHEN (`ai`.`reimburse_type` = 1)
THEN '个人报销'
WHEN (`ai`.`reimburse_type` = 2)
THEN '公司报销'
ELSE NULL
END
) AS `reimburse_type`,
`ai`.`sp_status` AS `sp_status`,
`ai`.`country` AS `country`,
`md`.`dic_value` AS `currency`,
`tpm`.`payment_method_name` AS `payment_method`,
`ft1`.`name` AS `apply_type`,
`ai`.`payee` AS `payee`,
`ai`.`company` AS `company`,
`ai`.`accounting_date` AS `accounting_date`,
`ai`.`accounting_month` AS `accounting_month`,
`am`.`apply_accountid` AS `fee_bear_code`,
`ft2`.`name` AS `fee_type`,
`center`.`costcenter_name` AS `costcenter_name`,
`ft3`.`name` AS `finance_expend_type`,
`am`.`apply_fee` AS `apply_fee`,
IF(
(`ai`.`apply_category` = 1),
`am`.`now_offset_fee`,
0
) AS `writeOffFee`,
`ca`.`pre_sp_no`,
`am`.`tax_rate` AS `tax_rate`,
`am`.`no_tax_money` AS `no_tax_money`,
`am`.`tax_money` AS `tax_money`,
`am`.`invoice_number` AS `invoice_number`,
IF(
(`ai`.`more_invoice` = 0),
`ai`.`transfer_status`,
`am`.`transfer_status`
) AS `transferStatus`,
`am`.`payment_due_date` AS `payment_due_date`,
`am`.`start_time` AS `start_time`,
`am`.`end_time` AS `end_time`,
`am`.`fee_desc` AS `fee_desc`,
`ai`.`is_transfer` AS `is_transfer`,
2 AS `environment`,
`bid`.`batch_id` AS `sync_batch_id`
FROM
`t_accounting_month` `am`
LEFT JOIN `t_apply_info` `ai`
ON `ai`.`sp_no` = `am`.`sp_no`
LEFT JOIN `t_user` `tu`
ON `ai`.`applyer_userid` = `tu`.`USER_ID`
LEFT JOIN `t_dept` `td`
ON `ai`.`applyer_partyid` = `td`.`dept_id`
LEFT JOIN `t_unit` `unit`
ON `ai`.`applyer_accountid` = `unit`.`unit_id`
LEFT JOIN `t_unit_costcenter_map` `center`
ON `am`.`cost_center` = `center`.`costcenter_code`
LEFT JOIN
(SELECT
apply_sp_no,
GROUP_CONCAT(DISTINCT ca.`pre_sp_no`) AS pre_sp_no
FROM
connect_apply ca
WHERE ca.`apply_sp_no` IN
(SELECT
`ai`.`sp_no` AS `approval_number`
FROM
`t_accounting_month` `am`
LEFT JOIN `t_apply_info` `ai`
ON `ai`.`sp_no` = `am`.`sp_no`
LEFT JOIN `t_user` `tu`
ON `ai`.`applyer_userid` = `tu`.`USER_ID`
LEFT JOIN `t_dept` `td`
ON `ai`.`applyer_partyid` = `td`.`dept_id`
LEFT JOIN `t_unit` `unit`
ON `ai`.`applyer_accountid` = `unit`.`unit_id`
LEFT JOIN `t_unit_costcenter_map` `center`
ON `am`.`cost_center` = `center`.`costcenter_code`
LEFT JOIN `m_dictionary` `md`
ON `ai`.`apply_currency` = `md`.`dic_key`
LEFT JOIN `t_payment_method` `tpm`
ON `ai`.`pay_method` = `tpm`.`payment_method_code`
LEFT JOIN `t_batch_id_month` `bid`
ON `bid`.`month` = DATE_FORMAT(`ai`.`accounting_date`, '%Y-%m')
LEFT JOIN `t_fee_type` `ft1`
ON `ft1`.`code` = `ai`.`apply_type`
LEFT JOIN `t_fee_type` `ft2`
ON `ft2`.`code` = `am`.`fee_type`
LEFT JOIN `t_fee_type` `ft3`
ON `ft3`.`code` = `am`.`finance_expend_type`
WHERE (
(`ai`.`sp_status` IN (20, 10, 13))
AND (
`am`.`apply_accountid` NOT IN ('COMPANY', 'FINA')
)
AND (`tu`.`STATUS` = 1)
AND (`am`.`fas_transfer_status` = 0)
AND (
DATE_FORMAT(`ai`.`accounting_date`, '%Y-%m') = "2022-05"
)
)
GROUP BY `ai`.`sp_no`)
AND ca.`status` = 0
AND ca.`pre_type` = 1
GROUP BY ca.`apply_sp_no`) `ca`
ON `ca`.`apply_sp_no` = `ai`.`sp_no`
LEFT JOIN `m_dictionary` `md`
ON `ai`.`apply_currency` = `md`.`dic_key`
LEFT JOIN `t_payment_method` `tpm`
ON `ai`.`pay_method` = `tpm`.`payment_method_code`
LEFT JOIN `t_batch_id_month` `bid`
ON `bid`.`month` = DATE_FORMAT(`ai`.`accounting_date`, '%Y-%m')
LEFT JOIN `t_fee_type` `ft1`
ON `ft1`.`code` = `ai`.`apply_type`
LEFT JOIN `t_fee_type` `ft2`
ON `ft2`.`code` = `am`.`fee_type`
LEFT JOIN `t_fee_type` `ft3`
ON `ft3`.`code` = `am`.`finance_expend_type`
WHERE (
(`ai`.`sp_status` IN (20, 10, 13))
AND (
`am`.`apply_accountid` NOT IN ('COMPANY', 'FINA')
)
AND (`tu`.`STATUS` = 1)
AND (`am`.`fas_transfer_status` = 0)
AND (
DATE_FORMAT(`ai`.`accounting_date`, '%Y-%m') = "2022-05"
)
)
GROUP BY `am`.`month_id`
实际案例
5、查询 | 删除数据表中根据多字段查询存在多条重复数据(删除重复数据,留下id最小的一个)
SELECT * FROM afee a
WHERE (a.fee) IN (SELECT fee FROM afee GROUP BY fee HAVING COUNT(*) > 1)
AND id NOT IN (SELECT MIN(id) FROM afee GROUP BY fee HAVING COUNT(*)>1)
DELETE
FROM
afee
WHERE id IN
(SELECT
res.id
FROM
(SELECT
a.id
FROM
afee a
WHERE (a.fee) IN
(SELECT
fee
FROM
afee
GROUP BY fee
HAVING COUNT(1) > 1)
AND a.id NOT IN
(SELECT
MIN(id)
FROM
afee
GROUP BY fee
HAVING COUNT(1) > 1)) AS res)
注:此种方式删除时,子查询结果应“包一层”,否则会抛出You can't specify target table 'afee' for update in FROM clause错误
6、更新数据库表字段类型
ALTER TABLE t_save_apply_info MODIFY COLUMN all_fee DECIMAL(12,2) COMMENT "总费用";
7、增加字段
alter table 表名 add 字段名 字段类型(长度) comment "备注"
有用的sql笔记(工作总结)的更多相关文章
- SQL 笔记 By 华仔
-------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据 ...
- SQL笔记 --- 数据库设计步骤(转)
SQL笔记 --- 数据库设计步骤 目录 总体设计过程需求分析概念结构设计逻辑结构设计数据库物理设计数据库实施数据库运行和维护 总体设计过程 0 » 下一篇:vim 命令集 posted @ 2012 ...
- 三个有用的SQL辅助工具
三个有用的SQL辅助工具 编写人:CC阿爸 2015-1-23 工欲善其事必先利其器,今天在这里,我想与大家一起分享三个有用的SQL辅助工具.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧. 相信 ...
- SQL笔记1:SELECT及SELECT高级应用
T-SQL笔记1:SELECT及SELECT高级应用 本章摘要 1:安装AdventureWorks 2:基本运算符和表达式 3:between 4:like 5:escape 6:TOP 7:G ...
- SQL索引工作原理
SQL 当一个新表被创建之时,系统将在磁盘中分配一段以8K为单位的连续空间,当字段的值从内存写入磁盘时,就在这一既定空间随机保存,当一个8K用完的时候, SQLS指针会自动分配一个8K的空间.这里,每 ...
- 金典 SQL笔记 SQL语句汇总
SELECT * FROM (SELECT ROW_NUMBER() OVER ( ORDER BY id) AS rowN,FNumber, FName,FSalary ,Fage FROM dbo ...
- (2.2)【转】mysql的SQL笔记
一千行 MySQL 详细学习笔记 IT技术思维 4月1日 ↑↑↑点上方蓝字关注并星标⭐「IT技术思维」 一起培养顶尖技术思维 作者:格物 原文链接:https://shockerli.net/post ...
- Head First SQL笔记
看的时候总结了一下,如下: Chapter 1: 创建数据库 CREATE DATABASE database_name; 使用数据库 USE database_name; 创建表 CRATE TAB ...
- 比较有用的sql语句
一.基础 .说明:创建数据库 CREATE DATABASE database-name .说明:删除数据库 drop database dbname .说明:备份sql server --- 创建 ...
- 金典 SQL笔记(6)
page223-索引 --利用SQL 语句创建索引 --CREATE INDEX 索引名称on 表名(字段 ,字段, 字段字段n) --索引名称必须为唯一的,字段 ,字段, 同意一个到多个 --范例为 ...
随机推荐
- CO01生产订单屏幕增强
一.生产订单客户屏幕新增字段 二.生产订单抬头AUFK表的CI_AUFK中新增屏幕字段 三.CMOD 增强分配PPCO0012 修改0100屏幕,新增对应字段,其中生产订单类型设置为下拉框 EXIT_ ...
- 2024-01-17:lc的30. 串联所有单词的子串
2024-01-17:用go语言,给定一个字符串 s 和一个字符串数组 words. words 中所有字符串 长度相同. s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接 ...
- JSP | JSP 动作详解
原作者为 RioTian@cnblogs, 本作品采用 CC 4.0 BY 进行许可,转载请注明出处. 本篇学习自:C语言中文网,部分内容转载仅供学习使用. \[QAQ \] JSP 动作利用 XML ...
- Delete `␍`eslint(prettier/prettier)错误
最佳实践: 现在VScode,Notepad++编辑器都能够自动识别文件的换行符是LF还是CRLF. 如果你用的是windows,文件编码是UTF-8且包含中文,最好全局将autocrlf设置为fal ...
- flexible+rem移动端适配
- shell脚本(1)-shell介绍
一.shell介绍 1.什么是shell shell是c语法编写的,是用户和liunx内核沟通的桥梁,即是命令语法,也是解释性编程语言. 内核处理的都是二进制,而用户处理的都是高级语法,系统开发人员可 ...
- Jstack 查看线程状态及定位占用 cpu 较高的 java 线程
本文为博主原创,未经允许不得转载: 1. Jstack 用来查看 java 指定进程所包含的 java 线程状态: "arthas-NettyHttpTelnetBootstrap-3 ...
- Keep English Level-04
firm -- 坚定的,坚固的;公司 share -- n 股份,份额 executive -- 执行官 There is no chance,no density,no fate,that can ...
- Go-GC
- Go-数据类型-函数
函数类型 函数声明本质上是定义了函数类型的变量 package main import "fmt" // 定义了函数,本质上是在全局作用域中声明了一个函数类型的变量 info 其类 ...