一、sql 中的 left join 、right join 、inner join之间的区别
left join (左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join (右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join (等值连接) 只返回两个表中联结字段相等的记录
二、对表中数据某个字段进行修改
update table_name set column1 = value1, colunm2 = value2...where ...;
三、给表添加或者修改字段
ALTER TABLE table_name ADD/MODIFY columnName 类型(int)默认值(DEFAULT NULL)描述(COMMENT)
四、case when 语法
有两种形式
1、column 是任意需要比较的字段 , value是比较的值 ,result 是指定的结果,name 是返回这一列的列名
CASE column
WHEN value1 THEN result1
WHEN value2 THEN result2 ...
ELSE result3
END AS NAME
2、两种写法基本相似
CASE
WHEN column = value1 THEN result1
WHEN column = value2 THEN result2 ...
ELSE result3
END AS NAME
练习
SELECT login_name ,
CASE login_name
WHEN '黎明' THEN '明星'
WHEN 'lisi' THEN '普通人'
ELSE '不是人'
END AS type
FROM saut_m_user WHERE id > 0
结果
五、mapper 中传入一个数组参数
<if test="applyStatus != null and applyStatus.size() > 0 ">
loan.apply_status in
<foreach item="item" index="index" collection="applyStatus" open="(" separator="," close=")">
#{item, jdbcType=BIGINT}
</foreach>
</if>
六,根据多列进行排序
SELECT * FROM table ORDER BY column1 DESC, column2 DESC
首先根据column1进行降序排序,如果column1相同,再根据column2进行降序排序
七,MySQL的Limit子句
Limit子句可以被用于强制 SELECT 语句返回指定的记录数。Limit接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。
//初始记录行的偏移量是 0(而不是 1):
mysql> SELECT * FROM table LIMIT 5,10; //检索记录行6-15
//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:
mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last
//如果只给定一个参数,它表示返回最大的记录行数目。换句话说,LIMIT n 等价于 LIMIT 0,n:
mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行
八 ,GROUP_CONCAT 函数
GROUP_CONCAT 函数可以在 group by 分组之后,找出哪些列被分在了一起,如下
SELECT id, SUM(loan_balance) AS loan_balance, GROUP_CONCAT(id) as groupIds
FROM t_loan_application_detail
where id in (29, 35)
GROUP BY payee, collection_account_number, organize_id,
payment_purpose, payment_body, payment_account
我们可以看到,id 为29 ,35的列被分为了一组,这样我们就可以做进一步的关联了!