什么是MySQL的最佳替代dual?

waxmsbnn  于 12个月前  发布在  Mysql
关注(0)|答案(5)|浏览(301)

所以,我主要是在oracle工作,并通过使用dual而被宠坏了。对于在给定数据库上具有select特权的用户,如何再现双重功能?
IE:

Select 'foo' from dual

可能是一个很简单的答案,我只是错过了。

uqcuzwp8

uqcuzwp81#

我记得在oracle中使用Select 1 from dual,在mysql中只使用select 1;。所以我认为你可以尝试不使用表格引用。
这是为了验证连通性,因此不确定它是否适用于您的情况。

syqv5f0l

syqv5f0l2#

在没有表是referenced的情况下,允许指定DUAL作为虚拟表名:

SELECT 1+1;

SELECT 1 + 1 FROM DUAL;
w1jd8yoj

w1jd8yoj3#

在大多数情况下,您可以在MySQL和MariaDB中省略FROM DUAL
但是要验证if you need a WHERE,您仍然需要FROM DUAL
示例(用法:避免用不同ID重新插入的一种方式):

INSERT INTO `t1`(`id`, `name`, `description`) 
    SELECT NULL, 'LopsusNonsus', 'my description'
        FROM DUAL 
        WHERE NOT EXISTS (SELECT id FROM `t1` WHERE `name`='LopsusNonsus' LIMIT 1) ;
u5rb5r59

u5rb5r594#

您可以将information_schema.schemata表用于当前会话数据库,因为每个数据库都有一行。

select
1
from
information_schema.schemata
where
schema_name = database()
cgfeq70w

cgfeq70w5#

简单地说,你不需要FROM dual。这与大多数其他DBMS相同。
MySQL和MariaDB都允许你使用FROM dual,但这只对在它们之间复制和粘贴代码有用。
如果你真的想把FROM dual和其他的一起使用,你可以这样做:

--  PostgreSQL, MSSQL, SQLite
    DROP TABLE IF EXISTS dual;
    CREATE TABLE dual(
        dummy CHAR(1)
    );
    INSERT INTO dual VALUES('X');

它复制了Oracle的dual表。

相关问题