select查询何时以“with”开头

piok6c0g  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(311)

我在读这个问题,如何确定java中jdbctemplate的sql查询类型?。正确答案是,select查询可以从 SELECT 或者 WITH .
仅供参考,答案是:

// SELECT subqueries are irrelevant for the final result. So the command, the first verb is indicative of the result (int updateCount vs. ResultSet).

boolean isSqlSelect = sql.toUpperCase().startsWith("SELECT")
                   || sql.toUpperCase().startsWith("WITH");

现在,假设我有一个问题

SELECT id, name, email FROM users;

问题
如何重写以 WITH ?
尽管问题是针对jdbc的,但它对所有sql和odbc/jdbc都是通用的吗?

vwkv1x7d

vwkv1x7d1#

WITH 是公共表表达式(CTE)的语法。这是所有合理的数据库基本上都支持的标准sql语法(mysql是最后添加这种支持的)。
CTE用于定义可在查询中多次引用的子查询。
请注意,CTE可用于 UPDATE 以及 DELETE 声明以及 SELECT ,因此它们不一定表示 SELECT .

siotufzp

siotufzp2#

既然你也问过如何用cte重写你的查询。。。

with cte as

(select id, name, email 
 from users)

select * from cte;

我发现在应用程序的早期定义列名更简单 with 所以我留了一些空间给我的朋友 select ```
with cte (id, name, email) as

(select *
from users)

select * from cte;

相关问题