标签: with-clause

SQL WITH子句示例

可能重复:
CTE和SubQuery之间的区别?

我试图了解如何使用该WITH条款和该条款的目的WITH.

我理解的只是,该WITH条款取代了正常的子查询.

任何人都可以通过一个小例子详细解释这个问题吗?

sql with-clause

186
推荐指数
2
解决办法
82万
查看次数

你如何在MySQL中使用"WITH"子句?

我正在将我的所有SQL Server查询转换为MySQL,并且我的查询WITH都失败了.这是一个例子:

WITH t1 AS
(
     SELECT article.*, userinfo.*, category.*
     FROM question
     INNER JOIN userinfo ON userinfo.user_userid = article.article_ownerid
     INNER JOIN category ON article.article_categoryid = category.catid
     WHERE article.article_isdeleted = 0
)
SELECT t1.*
FROM t1
ORDER BY t1.article_date DESC
LIMIT 1, 3
Run Code Online (Sandbox Code Playgroud)

mysql common-table-expression with-clause subquery-factoring mysql-8.0

100
推荐指数
5
解决办法
19万
查看次数

使用WITH子句查询Postgres"缺少FROM子句条目"错误

我试图在Postgres 9.1.3中使用此查询:

WITH stops AS (
    SELECT citation_id,
           rank() OVER (ORDER BY offense_timestamp,
                     defendant_dl,
                     offense_street_number,
                     offense_street_name) AS stop
    FROM   consistent.master
    WHERE  citing_jurisdiction=1
)

UPDATE consistent.master
SET arrest_id = stops.stop
WHERE citing_jurisdiction=1
  AND stops.citation_id = consistent.master.citation_id;
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

ERROR:  missing FROM-clause entry for table "stops"
LINE 12: SET arrest_id = stops.stop
                         ^

********** Error **********

ERROR: missing FROM-clause entry for table "stops"
SQL state: 42P01
Character: 280
Run Code Online (Sandbox Code Playgroud)

我真的很困惑.根据Postgres文档,WITH子句显示正确.如果我在WITH子句中单独运行查询,我会得到正确的结果.

sql postgresql with-clause

23
推荐指数
1
解决办法
4万
查看次数

T-SQL:CTE别名的多次使用 - 不仅在外部查询中

当我在我的一个脚本中使用WITH子句时,我遇到了一个问题.这个问题很容易指出我想多次使用CTE别名,而不仅仅是在外部查询中,并且存在症结.

例如:

-- Define the CTE expression
WITH cte_test (domain1, domain2, [...])
AS
-- CTE query
(
    SELECT domain1, domain2, [...]
    FROM table
)
-- Outer query
SELECT * FROM cte_test
-- Now I wanna use the CTE expression another time
INSERT INTO sometable ([...]) SELECT [...] FROM cte_test
Run Code Online (Sandbox Code Playgroud)

最后一行将导致以下错误,因为它在外部查询之外:

消息208,级别16,状态1,行12无效的对象名称'cte_test'.

有没有办法多次使用CTE.让它持久?我目前的解决方案是创建一个临时表,我存储CTE的结果,并将此临时表用于任何进一步的语句.

-- CTE
[...]
-- Create a temp table after the CTE block
DECLARE  @tmp TABLE (domain1 DATATYPE, domain2 DATATYPE, [...])
INSERT INTO @tmp (domain1, domain2, [...]) SELECT domain1, …
Run Code Online (Sandbox Code Playgroud)

sql t-sql common-table-expression with-clause

6
推荐指数
2
解决办法
5749
查看次数

with子句中的sql with子句

我可以这样做:

with t as 
    (
        with tt as
            ( 
                 select * from table 
            )
        SELECT * FROM tt
    )
select * from t
Run Code Online (Sandbox Code Playgroud)

我愿意对inner with子句的输出执行一些逻辑,而不是再对外部with子句的输出执行一些操作.

任何帮助将不胜感激...
谢谢

注意: - 它只是一些简化的查询,将在我的实际查询中解决我的问题,它有嵌套的子句

sql sql-server with-clause

6
推荐指数
2
解决办法
1万
查看次数

什么条款呢?Neo4j的

我不明白在Neo4j中做什么WITH子句.我阅读了The Neo4j Manual v2.2.2,但对于WITH子句并不十分清楚.没有很多例子.例如,我有以下图表,其中蓝色节点是足球队,黄色是他们的体育场. 在此输入图像描述

我想找到两个或更多球队比赛的体育场馆.我发现查询并且它有效.

match (n:Team) -[r1:PLAYS]->(a:Stadium)
with a, count(*) as foaf
where foaf > 1
return a
Run Code Online (Sandbox Code Playgroud)

count(*)告诉我们匹配行的数量.但我不明白WITH子句的作用.

neo4j with-clause

6
推荐指数
1
解决办法
4612
查看次数

如何在 SQL 中使用“With”子句创建表

我正在尝试使用 WITH 子句创建持久表,但是出现错误。

对于上下文,我目前找到的答案是

CREATE TABLE my_table
AS 
WITH my_tables_data AS ( 
   SELECT another_table.data1 AS some_value 
   FROM another_table
) 
SELECT * 
FROM some_data; 
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误

消息 319,级别 15,状态 1,第 5 行 关键字“with”附近的语法不正确。如果此语句是公共表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前一条语句必须以分号终止。

我的代码是

CREATE TABLE SalesOrdersPerYear  
WITH t1 AS (
    -- Define the CTE expression name and column list.  
    WITH Sales_CTE (SalesPersonID, BaseSalary)  
    AS  
    -- Define the CTE query.  
    (  
        SELECT SALES_PERSON.SALES_PERSON_ID, SALES_PERSON.BASE_SALARY  
        FROM SALES_PERSON  
        WHERE SALES_PERSON_ID IS NOT NULL  
    )  
    -- Define the outer query referencing the CTE name. …
Run Code Online (Sandbox Code Playgroud)

sql sql-server with-clause

6
推荐指数
1
解决办法
4万
查看次数

WITH 子句:使用 Hibernate 进行子查询分解

WITH dept_count AS (
  SELECT deptno, COUNT(*) AS dept_count
  FROM   emp
  GROUP BY deptno)
SELECT e.ename AS employee_name,
       dc.dept_count AS emp_dept_count
FROM   emp e,
       dept_count dc
WHERE  e.deptno = dc.deptno;
Run Code Online (Sandbox Code Playgroud)

我们如何将从上面的查询中检索到的数据(意味着由于使用WITH CLAUSE而创建的临时表dept_count)映射到以下java类?

我的 Java 类具有以下属性:employee_name、emp_dept_count。

sql hibernate hibernate-mapping with-clause

5
推荐指数
1
解决办法
2740
查看次数

JOOQ 查询 JOIN ON WITH 子句

如何编写 JOOQ 查询来连接“with”子句中的字段?

例如,我尝试过:

create.with("a").as(select(
                           val(1).as("x"),
                           val("a").as("y")
                   ))
      .select()
      .from(tableByName("a")
      .join(ANOTHER_TABLE)
          .on(ANOTHER_TABLE.ID.eq(tableByName("a").field("x")))
      .fetch();
Run Code Online (Sandbox Code Playgroud)

但是,由于编译器不知道 tableByName("a").field("x") 的类型,因此无法解析要使用哪个 eq() 方法。鉴于我知道类型,有没有办法可以明确提供它?或者我应该采取另一种方法从“with”子句加入字段?

java sql with-clause jooq

4
推荐指数
1
解决办法
3966
查看次数

WITH子句和临时表之间有什么区别?

用外行术语来说,WITH子句和临时表之间的主要区别是什么?

在哪种情况下最好使用一种?

sql data-warehouse temp-tables with-clause amazon-redshift

3
推荐指数
1
解决办法
2698
查看次数

Oracle WITH CLAUSE无法正常工作?

我正在尝试在查询中使用WITH子句,但一直收到消息

ORA-00942:表或视图不存在

我试图创建一个简单的查询,仅作为此处的示例:

WITH
test AS

SELECT COUNT(Customer_ID)FROM Customer

SELECT * FROM test;

但是即使这样也行不通,它只是给出以下信息:

SELECT * FROM test; 2 3 4 5 6 SQL>
SELECT * FROM test
*第1行出现错误:
ORA-00942:表或视图不存在

我以前从未使用过WITH子句,这里缺少一些简单的东西吗?我正在使用Oracle数据库10g企业版10.2.0.1.0版-产品请提供任何建议。谢谢。

sql oracle ora-00942 with-clause

2
推荐指数
1
解决办法
8239
查看次数

Oracle SQL WITH 子句选择连接列

查询语句:

WITH joined AS (
    SELECT * 
    FROM table_a a 
    JOIN table_b b ON (a.a_id = b.a_id)
)
SELECT a_id 
FROM joined 
Run Code Online (Sandbox Code Playgroud)

返回无效标识符。

使用 WITH 子句时如何选择连接列?我尝试过别名、前缀,但没有任何效果。我知道我可以使用:

WITH joined AS (
    SELECT a.a_id 
    FROM table_a a 
    JOIN table_b b ON (a.a_id = b.a_id)
)
SELECT a_id 
FROM joined
Run Code Online (Sandbox Code Playgroud)

但我需要这个别名来覆盖所有领域。

我设法满足此条件的唯一方法是使用:

WITH joined AS (
    SELECT a.a_id a_id_alias, a.*, b.* 
    FROM table_a a 
    JOIN table_b b ON (a.a_id = b.a_id) 
)
SELECT a_id_alias 
FROM joined 
Run Code Online (Sandbox Code Playgroud)

但这不是完美的解决方案......

sql oracle join with-clause

0
推荐指数
1
解决办法
4927
查看次数