MySQL数据库 关于查询 随笔

  • 为查询结果中添加自定义的一列
SELECT id, title, 'haha' mark FROM course;
  • 通过子查询出来的数据,作为一张表也可以join,多用于中间表,使用left join,这样把关联的和未关联的都查询出来了,比如
SELECT * FROM (
SELECT * FROM relation
) temp LEFT JOIN audio audio ON audio.id = temp.audio_id
ORDER BY temp.id DESC

批量更新条件查询出来的数据:

UPDATE audio SET is_delete = 1
WHERE id IN (SELECT * FROM (SELECT id FROM audio ORDER BY create_time DESC LIMIT 0,10) temp)
  • 关于MySQL update 语句中concat 和 substring的应用:
substring(column_name,n) // 截取某一字段从第n个字符开始到结尾的字符串;

substring(column_name,m,n) // 截取某一字段从第m个到n个字符的字符串;

update table set column = concat(column, 'hahaha')  // 把column中的数据后面加上'hahaha';

concat 起到连接字符串的作用,不过如果有一个为null,那么结果也为null;

  • concat_ws 和group_concat
concat_ws(separator, str1, str2, column1, column2...) // 起到用指定分隔符分隔字符串/column的功能;

group_concat( [DISTINCT]  要连接的字段   [Order BY 排序字段 ASC/DESC]   [Separator '分隔符'] )

group_concat可以把同一列数据查询出为一行,并可以指定分隔符和排序,去重;

  • mysql 查询中union 和 order by的使用

如果希望对整个查询出来的结果进行统一排序,那么可以不使用括号,只需要给后面的SQL语句添加排序

SELECT  create_time, update_time FROM c2_course
UNION
SELECT create_time, update_time FROM c2_lesson ORDER BY create_time;

如果使用union去结合两个SQL语句查询出来的数据,如果两个SQL语句需要分别进行排序,那么必须使用括号

(SELECT * FROM table1 WHERE mem_id = 111725 ORDER BY lesson_id)
UNION
(SELECT * FROM table1 WHERE mem_id = 23507 ORDER BY lesson_id);
// 这种方式是不管用的,union语句中的order by 是不生效的,需要使用如下方式:
SELECT * FROM (SELECT * FROM table1 WHERE mem_id = 111725 ORDER BY lesson_id) a
UNION
 SELECT * FROM (SELECT * FROM table1 WHERE mem_id = 23507 ORDER BY lesson_id) b;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值