如何使用带有 WITH 子句的 INSERT 语句?
How to use INSERT statement with WITH clause?
我的目标是使用 WITH 子句将数据插入多个 table。
我试过的,逐步测试:
- 使用 INSERT 语句进行测试
INSERT INTO user VALUES (default, 'test2', 'test', 1);
Update count: 1
(2 ms)
- 使用 WHERE 子句进行测试。
SELECT 1 WHERE EXISTS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0');
1
1
(1 row, 1 ms)
- 使用 WITH 子句进行测试。
WITH temp AS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0')
SELECT 1 FROM temp;
1
1
这就是问题所在
4.用WHERE和WITH子句测试
WITH temp AS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0')
SELECT 1 WHERE EXISTS (temp);
我的预期结果是 SQL 语句应该 return 一行。
我的实际结果是数据库报错:
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);
您需要在第 4 个示例的 EXISTS
子句中使用正式的 SELECT
:
WITH temp AS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0')
SELECT 1 WHERE EXISTS (SELECT 1 FROM temp);
我的目标是使用 WITH 子句将数据插入多个 table。
我试过的,逐步测试:
- 使用 INSERT 语句进行测试
INSERT INTO user VALUES (default, 'test2', 'test', 1);
Update count: 1
(2 ms)
- 使用 WHERE 子句进行测试。
SELECT 1 WHERE EXISTS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0');
1
1
(1 row, 1 ms)
- 使用 WITH 子句进行测试。
WITH temp AS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0')
SELECT 1 FROM temp;
1
1
这就是问题所在 4.用WHERE和WITH子句测试
WITH temp AS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0')
SELECT 1 WHERE EXISTS (temp);
我的预期结果是 SQL 语句应该 return 一行。
我的实际结果是数据库报错:
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);
您需要在第 4 个示例的 EXISTS
子句中使用正式的 SELECT
:
WITH temp AS (SELECT 1 FROM organization_member WHERE user='628111234567' AND role='0')
SELECT 1 WHERE EXISTS (SELECT 1 FROM temp);