selet[select 选项]
字段列表[字段别名] /*
from 数据源
left join xxx on xxxx
[where条件字句]
[group by 字句]
[having 字句]
[order by 字句]
[limit 字句]
字段列表 字段别名!!!!!
select xx 别名,xxx
if (aaa like 'Fid%',substring(aaa, 6, 8),aaa) newaaa
split 不方便则用 substring
mysql if
< 40 40到60之间 大于60
case when score <40 then 'xxx'
when score <60 then 'dddd'
when score>60 then 'ccc'
end as newScore
week(dt) 一年中的第几周
select yearweek('2020-01-08',1)
返回年和第几周
20200102
sql in 查询 在按照in里面的顺序进行输出
SELECT orderId from order WHERE orderId in (051,038,050) order by field(orderId,051,038,050)
# mysql查询拼接
select concat_ws('_',field1,field2) from table;
CONCAT_WS('_',field1,field2) mysql查询结果拼接 第一个是连接符号 二三是连接的字段
#mysql 分组查询合并 group_concat mysql中的多行查询结果合并成一个 相同的字段将值合并到一起 分组合并
field1 | field2 |
name | zhangsna |
name | lisi |
age | 15 |
age | 18 |
group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'] )
SELECT id,GROUP_CONCAT(score) FROM testgroup GROUP BY id
SELECT id,GROUP_CONCAT(DISTINCT score) FROM testgroup GROUP BY id
SELECT id,GROUP_CONCAT(score ORDER BY score DESC) FROM testgroup GROUP BY id
SELECT id,GROUP_CONCAT(score SEPARATOR ';') FROM testgroup GROUP BY id
如上面的表格需要将name行和age行合并则需要将其分组group 然后在将其concat group_concat
select field1,group_concat(field2) from table group by field1 默认以,分割合并后的结果
变成如下
field1 | result |
name | zhangsan,lisi |
age | 15,18 |
往数据库里面插数据 如果有一列是自增主键的话 那么此列可以忽略不用往里面添加 mysql会自动往里面添加值
mysql 模糊查询 like _ 匹配单个字符 %匹配任意数目字符包括零个字符 且 mysql模糊查询忽略大小写 模糊查询不忽略大小写的话 需要在like 后面添加 binary 即 like binary ‘%xxx%’