2013-01-07 87 views
1

我有3個陳述,我想合併成一個;無論如何,我可以學習嗎?SQL組合3個語句;可能嗎?

插入

INSERT INTO plants (name, latin_name, type, stock, price, flower_colour, foilage_colour, features, sun_exposure, soil_type, hardiness, competance, height, spread, description, flowering_season) 
VALUES 
(dandelion, `Taraxacum officinale`, weed, 12, 1.99, white, green, flower, `full sun`, alkaline, `annual hardy`, low, 12cm, 7cm, d, summer) 

更新

UPDATE plants SET flower_colour='white', soil_type='clay', height='15cm', spread='4cm', description='Weed' AND price='£1.99' 

刪除

DELETE FROM plants WHERE name='dandelion' AND type='weed' 
+3

您正在使用哪種RDBMS? –

+1

製作存儲過程。不知道你是否認爲這是「合併」,但最終的結果是一個調用來執行所有3個語句。我不知道有一種方法可以執行,否則 –

+0

phpMyAdmin,如果我可以在一個SQL查詢中運行它,它將工作,如果可能的話;怎麼樣? –

回答

1

對你來說RDBMS是不可能的。

+0

謝謝。我不知道這是否可能。我不知道很多MySQL。 –

1

我要問的第一個問題是 「你爲什麼要這麼做?」以您的示例爲例,您可以插入,更改並刪除條目。除非觸發器等隱藏邏輯更新數據的其他元素,否則數據層的狀態不會因這三個命令的執行而改變。

另外,您的UPDATE語句在語法上不正確; AND只能在WHEREHAVING條款中使用,所以我認爲您錯誤地忽略了某些內容。

真的沒有辦法將插入,更新和刪除功能合併成一個命令。您通常可以將所有三個命令作爲一個「腳本」從您使用的任何代碼層發送出去,或者將這些SQL命令封裝到一個存儲過程中並執行該命令,但是每個語句都會執行與底層數據非常不同的操作,重新開始不同的命令。

+1

在某些RDBMS上,例如SQL Server上的MERGE,例如 – Lamak

+0

MERGE命令的用途是根據另一個查詢的數據(例如同步)更改一個表的數據。雖然它可能在OP的實際情況下工作,但它確實沒有按照他在問題中所要求的內容,即一次性基於靜態查詢參數插入/更新/刪除。當然,正如我的回答所提到的,OP實際要求的東西不僅僅是一些無意義的東西。 – KeithS

+0

你是對的,實際上沒有讀過這些語句的細節,只是'INSERT,UPDATE,DELETE'部分。雖然'MERGE'仍然可以以某種方式使用 – Lamak