对于作业,我必须在一个大的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会遇到错误。是否有一个包含所有这些关键字的简单陈述?
答案 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);
但您无法合并DELETE
和UPDATE
或UPDATE
和INSERT
。只是其中一个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 ...