簡體   English   中英

如何使用帶有 WITH 子句的 INSERT 語句?

[英]How to use INSERT statement with WITH clause?

我的目標是使用 WITH 子句將數據插入多個表中。

我嘗試過的,逐步測試:

  1. 使用 INSERT 語句進行測試
INSERT INTO user VALUES (default, 'test2', 'test', 1);
Update count: 1
(2 ms)
  1. 使用 WHERE 子句進行測試。
SELECT 1 WHERE EXISTS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0');
1  
1
(1 row, 1 ms)
  1. 使用 WITH 子句進行測試。
WITH temp AS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0')

SELECT 1 FROM temp;
1  
1

這是 go 錯誤的地方4. 使用 WHERE 和 WITH 子句進行測試

WITH temp AS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0')

SELECT 1 WHERE EXISTS (temp);

我的預期結果是 SQL 語句應該返回一行。

我的實際結果是數據庫拋出錯誤:

Syntax error in SQL statement "WITH TEMP AS (SELECT 1 FROM ORGANIZATION_MEMBER WHERE USER='628111234567' AND ROLE='0')

SELECT 1 WHERE EXISTS (TEMP[*])"; expected "(, WITH, SELECT, TABLE, VALUES"; SQL statement:
WITH temp AS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0')

SELECT 1 WHERE EXISTS (temp) [42001-200] 42001/42001 (Help)

這可能是我打算使用的解決方案

WITH temp AS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0')

INSERT INTO user (default, 'test', 'test', 1) WHERE EXISTS (SELECT 1 FROM temp)
INSERT INTO user_detail (default, 'test', 'test') WHERE EXISTS (SELECT 1 FROM temp);

在第四個示例的EXISTS子句中,您需要一個正式的SELECT

WITH temp AS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0')

SELECT 1 WHERE EXISTS (SELECT 1 FROM temp);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM