1
成都创新互联专注于泽州网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供泽州营销型网站建设,泽州网站制作、泽州网页设计、泽州网站官网定制、重庆小程序开发服务,打造泽州网络公司原创品牌,更为您提供泽州网站排名全网营销落地服务。
查询数据表除了前三条以外的数据。
起初我想到的是这条语句
SELECT
*
FROM
admin
WHERE
userid
NOT
IN
(SELECT
userid
FROM
admin
ORDER
BY
userid
LIMIT
3)
ORDER
BY
userid
DESC
但是运行的时候会报
This
version
of
MySQL
doesn't
yet
support
'LIMIT
IN/ALL/ANY/SOME
subquery
这个的意思是表示子查询的时候不支持limit
,还有一点我就是很二了
就是查询的时候用not
in
效率非常不高
最后的解决办法是
CREATE
VIEW
view_top3_admin
AS
SELECT
*
FROM
admin
ORDER
BY
userid
LIMIT
3;
先创建一个视图
将子查询条件放到视图里面
然后在用这条语句
SELECT
*
FROM
admin
a
WHERE
NOT
EXISTS
(SELECT
1
FROM
view_top3_admin
b
WHERE
b.userid=a.userid
)
ORDER
BY
a.userid
DESC
先来解释下这条语句
SELECT
1
FROM
view_top3_admin
b
WHERE
b.userid=a.userid
表示查询表里面的值
只要有数据都显示为 1,1表示不读取数据
这样的话就是提升了查询的性能,当然也可以把
里面的1
换成
null
性能是一致的。整条语句的意思是查询admin表值,
判断条件是值不在子查询表里的。
2
union
和
union
all
的使用
先来解释下这两个关键字在mysql数据库中提供了UNION和UNION
ALL关键字,这两个关键字都是将结果集合并为一个,但这两者从使用和效率上来说都有所不同
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。
select
*
from
table
union
select
*
from
tabl
UNION
ALL只是简单的将两个结果合并后就返回
如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了
select
*
from
table
union
all
select
*
from
tabl
从效率上说,UNION
ALL
要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION
这两个关键字用做报表比较多
in作为查询条件,一般典型有两种用法:
一是IN常量,例如下面语句查询一、三年级的学生:
SELECT
*
FROM
student
WHERE
grade
IN
('一','三');
二是使用子查询,也就是IN(SQL语句),例如下面的语句查询不及格的班级的所有学生:
SELECT
*
FROM
student
WHERE
classno
IN
(
select
classno
from
scores
where
score60
);
1.第一招、mysql服务的启动和停止net stop mysqlnet start mysql。
2.第二招、登陆mysql语法如下: mysql -u用户名 -p用户密码键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了。
3.第三招、增加新用户格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询。
4.第四招: 操作数据库登录到mysql中,然后在mysql的提示符。