标签: subquery-factoring

你如何在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万
查看次数

Oracle - WITH CLAUSE => MERGE?(语法错误,)

我正在尝试使用WITH子句在Oracle中使用合并,但由于某种原因我无法使其工作.我确信这是显而易见的,但我还没有看到它.

-- behold, the wonders of fake data
WITH X AS ( 
SELECT 
  'moo' AS COW, 
  'woof' AS CAT, 
  (SELECT MAX( DECIBELS ) FROM ANIMALIA WHERE COW = 'moo' ) AS DECIBELS
FROM DUAL )
MERGE INTO ANIMALIA D 
USING X
WHEN MATCHED THEN
    UPDATE SET D.COW = X.COW;
Run Code Online (Sandbox Code Playgroud)

编辑

我实际上发现了如何处理这个问题(在我提交问题之前),但我认为,因为我花了很长时间才找到答案,希望将这个问题留下来意味着下一个人会发现它不是那么很多时间.

我将在一天左右的时间内发布答案,但如果其他人在同一时间发布,他们将获得积分.

oracle merge with-statement subquery-factoring ora-00928

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

带有子查询因子的Oracle DELETE语句

尝试这样做(适用于SQL Server):

WITH X AS (), Y AS (), Z AS ()
DELETE FROM TBL
WHERE TBL.ID IN (SELECT ID FROM Z);
Run Code Online (Sandbox Code Playgroud)

这适用于Oracle:

WITH X AS (), Y AS (), Z AS ()
SELECT * FROM TBL
WHERE TBL.ID IN (SELECT ID FROM Z);
Run Code Online (Sandbox Code Playgroud)

但DELETE不会:ORA-00928:缺少SELECT关键字

我的子查询相当大,是否有不同的语法来使其工作?

oracle oracle10g subquery-factoring ora-00928

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