mysql中字符串类型的数字排序出错解决方法:cast(year as signed)
eg:
select year,month
From table
order by cast(year as signed), cast(month as signed) asc
mysql查询结果自增(set @num = 0 ;)乱序问题
eg:
set @index_num=0;
SELECT @index_num:=@index_num+1 indexnum, device_name, years_data, months_data, day_data ,unit, `status`
FROM energy_floor_dianbiao_month_data
1、数据库准备
1.1:Websites.sql
create table Websites(
id int(11) primary key auto_increment,
name varchar(20),
url varchar(100),
alexa int(11),
country varchar(20)
)
insert into Websites(name,url,alexa,country) values("Google","https://www.google.cm/",1,"USA");
insert into Websites(name,url,alexa,country) values("淘宝","https://www.taobao.com/",13,"CN");
insert into Websites(name,url,alexa,country) values("菜鸟教程","http://www.runoob.com/",4698,"CN");
insert into Websites(name,url,alexa,country) values("微博","http://www.weibo.com/",20,"CN");
insert into Websites(name,url,alexa,country) values("Facebook","https://www.Facebook.com/",3,"USA");
1.2:apps.sql
create table apps(
id int(11) primary key auto_increment,
app_name varchar(20),
url varchar(100),
country varchar(20)
)
insert into apps(app_name,url,country) values("QQ APP","http://im.qq.com/","CN");
insert into apps(app_name,url,country) values("微博 APP","http://weibo.com/","CN");
insert into apps(app_name,url,country) values("淘宝 APP","https://www.taobao.com/","CN");
1.3 :access_log.sql (该SQL中的site_id字段对应websites表中的id字段)
自己按照上面的方式,或者直接用工具的快捷方式创建一张表,表的字段如下:
like关键字
模糊查询,语法格式:like “条件”;条件中:%为一个或多个字符,_为一个字符
-- 语句中查找name中包含oo,并且oo前有一个或多个字符,oo后有一个字符的数据
select * from websites where name like '%oo_';
limit关键字
limit用于查询指定个数的数据
语句种查询前两条的数据
select * from apps limit 2;
in关键字
in小括号里面的条件全部匹配
语句中查找id为1,2,3的数据
select * from websites where id in(1,2,3);
between and关键字
查找v1和v2之间的数据,语法格式:between v1 and v2
-- 语句中查找id在1和3之间的数据
select * from websites where id between 1 and 3;
as关键字
给列或者表起别名,语法格式:列/表 as 别名;其简略形式可以把as去掉,直接列/表 别名;
-- 语句中name的别名为n,url的别名为u,websites表的别名w
select name as n,url as a from websites w;
inner join
inner join为连接左右两张表,最后的结果只显示符合条件的数据;注意判断条件为on,而不是where;
-- 查询websites表和access_log表中id相等的数据
select * from websites w inner join access_log a on w.id = a.site_id;
left join
left join左边的表作为主表,主表的所有数据会全部显示,如果没有对应右边的表则显示为null
-- websites表作为主表,数据全部显示,对应的access_log表没有值就显示为null
select * from websites w left join access_log a on w.id = a.site_id;
right join
right join右边的表作为主表,主表的所有数据全部显示,左边的表有满足条件的就显示,没有就显示为null
-- access_log表作为主表,数据全部显示,对应的websites表有符合查询条件的就显示,没有匹配的则显示为null
select * from websites w right join access_log a on w.id = a.site_id;
union和union all
作用在:用于连接两个select语句,在使用union或者union all的时候两个select中的被查询字段数量一定要保持一致,否则报错!其最终的结果为垂直拼接!union可以去重,union all会显示所有数据!
select name,url from websites
union all
select id,app_name from apps;
insert into select
insert into table1(field1,field2) select field1,field2 from table2 :复制table2的filed1和field2内容到存在的表table1中,特别注意,表table1一定是存在的表
-- 复制apps表的app_name,url字段到websites表的name,url字段
insert into websites(name,url) select app_name,url from apps where app_name = 'QQ APP';
转载地址:
https://blog.csdn.net/qq_41011626/article/details/114634514?spm=1001.2014.3001.5502