【发布时间】:2016-09-01 22:41:30
【问题描述】:
我已阅读其他问题以及所有已发布的 cmets/与此问题类似的问题的答案。他们似乎都没有直接回答这个问题。
我想知道是否有办法将INSERT、DELETE 或UPDATE 语句连接或放置到SELECT 语句中。
如果有怎么办?这可以通过使用derived table 函数或subSelect 语句来完成吗?
例如:
INSERT INTO Customer (name)
VALUES 'Test Name'
但将其放入 SELECT 语句中
示例伪代码:
SELECT *
FROM Customer
WHERE
Customer.name = (INSERT INTO Customer (name) VALUES 'Test Name')
这里最重要的是以一种非常规的方式将 INSERT 语句放入 SELECT 语句中。
谢谢你,希望这会引发一些很好的对话/想法/结果!
想知道这个的原因:
- 我们当前的 DBMS (Fishbowl) 不允许我们在 SQL 编译器中使用 UPDATE、DELETE 或 INSERT 语句,我们希望大规模更改字段/清理表。
- 了解是否可行
【问题讨论】:
-
您是否有某个特定的问题要解决,或者这是一个练习?
-
任何数据库都不允许这种语法,所以我猜答案是“否”。 Postgres 确实做了类似的事情,在 CTE 中允许使用 DML 语句。 MySQL 在单个语句中没有任何类似的功能。
-
您是否尝试生成类似这样的脚本?
select 'INSERT INTO' || customer.name || ' VALUES 'Test Name' ' from customer -
我猜他的目标是插入到他的用户只有 SELECT 权限的数据库中
-
@Ashton 如果您无权插入或删除,那么您将无法在脚本生成后运行该脚本。您可以提出一个 proc 来生成和执行脚本并将其移交或通过具有特权的用户安排它。当我需要根据数据库表中的数据和/或标准进行大规模更新/插入时,这是我过去使用的方法。
标签: mysql sql subquery sql-insert derived-table