关于DUAL表在子查询中的用法提问

create table t_user(

    name varchar(16),

    age int

);

insert into t_user values

('alice', 16), ('bob', 16), ('charles', 16), ('charles', 11);

select * from t_user where NOT EXISTS (

    SELECT 1 FROM DUAL WHERE name = 'bob'

);

不太明白上面这个sql的子查询dual用法具体等效于临时表嘛,第一次见mysql中的这种用法

dual表是虚拟表 你可以这么理解

结果上和下面这个sql应该是没有任何区别,这种写法会更高效嘛?什么情况下需要使用这种写法?
select * from t_user where name <> 'bob'

dual语句可以有一些特殊用法 这个只是其中的一个用法 是的没啥区别

我空闲时间研究了一下,发现这种dual的写法和下面这个sql完全等效,连执行计划都一样。

select * from t_user t where exists (
    select 1 from (SELECT 'bob' as name from dual) d where t.name = d.name
);

想问一下类似的关于dual的特殊用法在哪里可以学习到,我在百度上搜索到的全部都是一些dual的基本知识,oceanbase的官方文档上我也没找到介绍这一块的,如果可以的话麻烦指个路,感谢!

DUAL 是 OceanBase 数据库与数据字典一起自动创建的表。DUAL 表位于用户 SYS 的 Schema 中,但所有用户都可以通过名称 DUAL 访问该表。

DUAL 表有一个列 DUMMY,定义为 VARCHAR2(1),并包含一个值为 X 的行。在使用 SELECT 语句计算常量表达式时,可以从 DUAL 表中选择数据,这种方式更好用。因为 DUAL 只有一行,所以常量只返回一次。 或者,您可以从任何表中选择常量、伪列或表达式,但该值将根据表中的行数返回对应的值。