Heim > Datenbank > MySQL-Tutorial > MYSQL基础02(查询)_MySQL

MYSQL基础02(查询)_MySQL

WBOY
Freigeben: 2016-05-30 17:10:58
Original
1086 Leute haben es durchsucht

查询是很大的一块,所以这里我只会写mysql的特点,就我目前使用的情况,MYSQL对标准SQL是比较支持,如果是新手的话,建议去w3school 学习标准SQL.

 

1.DUAL

 

DUAL是一个虚拟表,即该表是不存在的,用于直接select 标量时,使语句看起来符合sql规范

 

-- MSSQL
select 1,'A'
-- Oracle中dual 不可缺少
select 1,'A' from DUAL
-- mysql  以下2种格式都支持
select 1,'A';
select 1,'A' from DUAL;
Nach dem Login kopieren

2.LIMIT

相对MSSQL来说,MYSQL并没有TOP关键字,但有LIMIT,而且效率更高且更灵活

SELECT * FROM usr LIMIT 1;
-- LIMIT 1 的意思是取1条记录, MYSQL在取完1条记录后将不再操作.

SELECT * FROM usr LIMIT 0,2;
-- LIMIT 0,2的意思是从第一行(包括第一行)开始,取2条记录

SELECT * FROM usr WHERE u_id IN (SELECT u_id FROM usr WHERE dept='信息部' LIMIT 1);
-- 该语句执行时,MYSQL会报错,意思是不能在子查询中使用limit
-- 解决办法,将使用limit的语句再套一层表即可;如下:
SELECT * FROM usr WHERE u_id IN (SELECT * FROM (SELECT u_id FROM usr WHERE dept='信息部' LIMIT 1)aa)

PS:MSSQL中使用TOP,数据库会先排序,然后再返回数据,因此limit的效率比较高
Nach dem Login kopieren

3.子查询的update错误

UPDATE usr SET usr_name='匿名' WHERE u_id IN (SELECT u_id FROM usr WHERE dept='信息部')
-- 语句报错,大概意思是修改表不能使用自身
-- 解决方法,跟上面一样,再套一层表即可
UPDATE usr SET usr_name='匿名' WHERE u_id IN (SELECT * FROM (SELECT u_id FROM usr WHERE dept='信息部')aa)
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage