当前位置:   article > 正文

SQL常用语句相关—MySQL_sql查询100条数据

sql查询100条数据

SQL常用语句相关—MySQL

1.整体框架

select
--查询结果字段
from
表名
where
id="aaa"
group by
--按那个字段分组
having
name like '%a%'
--分组后过滤,带a的
order by
列名 desc
--desc降序排列;asc升序排列
limit
0,100;
--前100行
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

2.查询创建时间最新一条和最新一百条数据

创建时间最新一条数据

select id,org_id FROM test_1 where create_time=
             (select max(create_time) from test_1)
  • 1
  • 2

创建时间最新一百条数据

select id,org_id FROM test_1 ORDER BY create_time desc LIMIT 0,100
  • 1

3.IFNULL函数

1.IFNULL(er1,er2)用法,假如e1不为NULL,则 IFNULL() 的返回值为e1; 否则其返回值为 e2。

select id,ifnull(name,0)
  • 1

2.ISNULL(e) 的用法,如e为null,那么isnull() 的返回值为 1,否则返回值为 0。

select id,isnull(name)
  • 1

3.NULLIF(e1,e2)用法,如果e1 = e2 成立,那么返回值为NULL,否则返回值为e1。

select id,nullif(a.name,b.name)
  • 1

4.LEFT JOIN

LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name
  • 1
  • 2
  • 3
  • 4

内连接—在表中存在至少一个匹配时,INNER JOIN 关键字返回行。

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
  • 1
  • 2
  • 3
  • 4

5.case

1.简单case函数
当unit等于1时,执行f1语句,等于2时,执行f2语句,否则执行默认值

select id,
  case unit 
	when 1 then
	ifnull(id,0)--f1
	when 2 then
    ifnull(id,0)--f2
    else 默认值
    end as nu--重命名
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.case搜索函数

select id,
  case  
	when size<15 then
	ifnull(id,0)--f1
	when size>22 then
    ifnull(id,0)--f2
    else 默认值
    end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

6.LEFT和RIGHT

1.LEFT(str,len)
str: 给定的字符串,将从其左侧提取字符
len: 要提取的字符数,如果此参数大于字符串中的字符数,则此函数将返回实际的字符串
2.RIGHT(str,len)
str: 给定的字符串,将从其右侧提取字符
len: 要提取的字符数,如果此参数大于字符串中的字符数,则此函数将返回实际的字符串

where left(a.name,4)=left(b.name,4)
and right(a.id,2)=right(b.id,2)
  • 1
  • 2

7.DISTINCT

消除结果集中的重复行——NULL值也会看为相同值

select distinct name from table_1
--单列
select id distinct name_frist,name_last from table_1
--只有name_frist和name_last均相同才被判定为重复行
select count(distinct name) from table_1
--和count结合用
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

8.CONVERT函数

1.转换指定数据类型CONVERT(expr,type)—将字符串expr的字符集变成transcoding_name
expr: 要转换的值
type: 要转换为的数据类型

SELECT CONVERT('2022-05-25', DATETIME);
  • 1

2.转换指定字符集CONVERT(expr USING transcoding_name)—将字符串expr的字符集变成transcoding_name
expr: 要转换的值
transcoding_name: 要转换成的字符集

-- utf8mb4
SELECT CHARSET('ABC');
-- gbk
SELECT CHARSET(CONVERT('ABC' USING gbk));
  • 1
  • 2
  • 3
  • 4

9.locate函数

1.LOCATE(s1,s2)—返回字符串s2中第一次出现子字符串s1的位置。

SELECT LOCATE("2","123") FROM DUAL;
2--MySQL从1开始
SELECT LOCATE("1234","123") FROM DUAL;
0
  • 1
  • 2
  • 3
  • 4

2.LOCATE(s1,s2,p)—返回字符串s2中第一次出现子字符串s1的位置,从p的位置开始往后找。

SELECT LOCATE('q', 'asqdfasqdfser',4)
8
  • 1
  • 2

10.substr函数

1.SUBSTR(str,pos,len): 从pos开始的位置,截取len个字符

substr(string ,1,3)
str--取string左边第1位置起,3字长的字符串。
substr(string, -1,3)
g--取string右边第1位置起,3字长的字符串,显然右边第一位置起往右不够3字长
  • 1
  • 2
  • 3
  • 4

2.SUBSTR(str,pos): pos开始的位置,一直截取到最后

substr(string ,4)
ing--从右第4位置截取到最后
  • 1
  • 2

11.between and

相当于> <

expr  BETWEEN begin_expr AND end_expr;
--between筛选的是 expr >= begin_expr并且 expr <= end_expr 的数据,如果不存在则返回的是0;
expr NOT BETWEEN begin_expr AND end_expr;
--not between筛选的是 expr < begin_expr或者 expr > end_expr 的数据,如果不存在则返回的是0;
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/635999
推荐阅读
相关标签
  

闽ICP备14008679号