加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

mysql 查询dual报错_MYSQL基础02(查询)

发布时间:2022-10-31 14:31:33 所属栏目:MsSql教程 来源:转载
导读: 查询是很大的一块,所以这里我只会写mysql的特点,就我目前使用的情况Mssq子查询,MYSQL对标准SQL是比较支持,如果是新手的话,建议去w3school 学习标准SQL.
1.DUAL
DUAL是一个虚拟表,即该

查询是很大的一块,所以这里我只会写mysql的特点,就我目前使用的情况Mssq子查询,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;

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的效率比较高

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)

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!