2014-04-03 20 views
0

對於任務,我必須將所有這些關鍵字包含在一個大的MySQL語句中:select,from,where,group by,order by,inner join,insert,update,delete。將所有這些命令包含在一個大的MySQL語句中?

很顯然,除了最後3個以外,其餘的3個都很容易包含在1個語句中。

但是,我在使用2個SQL語句的聯合(一個選擇等,另一個插入)有問題。

例如,我有:

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

但我遇到錯誤使用UNION這種方式。是否有包含所有這些關鍵字的簡單聲明?

回答

1

我看不出解決方案把DELETE放在那裏。您可以使用所有必需的東西構建select語句,並在INSERT ON DUPLICATE KEY UPDATE語句中使用它。但刪除?在Oracle中,這可以通過使用MERGE語句來實現,但這在MySQL中不可用。所以我想,這個任務沒有解決方案。

INSERT INTO ... 
SELECT ... -- using from, where, group by, order by, and inner join here 
ON DUPLICATE KEY 
UPDATE ... 
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的操作。

相關問題