在一个大的MySQL语句中包含所有这些命令?

时间:2014-04-03 14:00:11

标签: mysql sql

对于作业,我必须在一个大的MySQL语句中包含所有这些关键词:select,from,where,group by,order by,inner join,insert,update,delete。

显然,除了最后3个之外的所有内容都很容易包含在1个声明中。

但是,我在2个SQL语句上使用union时出现问题(一个使用select等,另一个使用insert)。

例如,我有:

SELECT * FROM Database 
INNER JOIN (O_Database INNER JOIN ...) 
ON ...
GROUP BY ...
ORDER BY ...
UNION 
INSERT INTO Database (...) VALUES (...)

但是我以这种方式使用UNION会遇到错误。是否有一个包含所有这些关键字的简单陈述?

2 个答案:

答案 0 :(得分:1)

嗯,你可以做点什么

INSERT INTO A
SELECT whatever FROM B;

UPDATE A
INNER JOIN (SELECT * FROM B ) C ON A.id = C.id
SET A.whatever = C.whatever;

DELETE 
FROM A WHERE A.whatever IN (SELECT whatever FROM B);

但您无法合并DELETEUPDATEUPDATEINSERT。只是其中一个SELECT

的操作

答案 1 :(得分:1)

我看不到将DELETE放在那里的解决方案。您可以使用所需的所有内容构建一个select语句,并在INSERT ON DUPLICATE KEY UPDATE语句中使用它。但是DELETE?不可以。在Oracle中,可以使用MERGE语句,但这在MySQL中不可用。所以我猜,给出的任务没有解决方案。

INSERT INTO ...
SELECT ... -- using from, where, group by, order by, and inner join here
ON DUPLICATE KEY 
UPDATE ...