安妮日记>通知函范文
【转载】mysqldual虚拟表
虚拟表 dual 其实我是今天第⼀次听说,虽然以前有过它的应⽤。说不定你也⽤过哦,看这条 sql:lect sysdate(); 熟悉不!?虽然我不是狠熟悉,但我确定我⽤过它,其实他是:lect sysdate() from dual 的简写。
DUAL is purely for the convenience of people who require that all statements should have FROM and possibly other claus.光大银行网点查询
流鼻血怎么止血
MySQL may ignore the claus. MySQL does not require FROM DUAL if no tables are referenced.
官⽅的解释说:纯粹是为了满⾜lect … from…这⼀习惯问题,mysql会忽略对该表的引⽤。
碰到了新问题就去⽹上搜集了⼀下,发现原来 dual 表的应⽤地⽅还不少。。。把我发现的三个应⽤地⽅都加上:
1. lect express from dual #这条 sql 就类似上⾯的查看系统时间⼀样。把 express 替换成表达式或函数就⾏;
2. lect express from dual where condition #这条 sql 只是对上⾯的⼀点扩展加上⼀个 where 条件。其实这个 where 条件跟我们平时
使⽤的 where 条件没什么区别。执⾏的时候也是先判断 where ⼦句是否成⽴,满⾜然后再执⾏ lect 中的 express,最后返回express 执⾏的值;如果 where ⼦句不成⽴,则返回空。⽐如:lect 1+1 from where 1=1,将返回 2 ;
3. 第三个就是⼀条⽐较实⽤的 SQL 语句了!你否想过:插⼊数据时先判断⼀下这条记录是否已存在这个问题!?也许很多时候为了解决
这个问题,你会先 lect ⼀下,根据他的结果再决定是否继续写⼊数据库。但是⽤ dual 这个表,可以让你仅⼀条 SQL 就可以解决这个问题哦!
SQL 就是这样写的:
青春女孩
银行卡号怎么查INSERT INTO table (primarykey, field1, field2, ...)
情谊造句
SELECT key, value1, value2, ...
FROM dual
仰卧起坐正确做法
WHERE not exists (lect * from table where primarykey = id);
下⾯是我测试时的结果图,附上:
当然,好奇的你肯定想到了,这个 dual 表到底是个什么东西、它⾥⾯到底放着什么!是不想是⽤:lect * from `dual`; 和 show create table `dual` 查看⼀下他的记录。答案我告诉你把,这两条 sql都会返回错误!错误??对,确实都会返回错误,这可能就是为什么叫他虚拟表的原因吧