2016-05-06 126 views
0

我已閱讀其他問題和所有發佈的評論/答案,與此類似的問題。他們似乎都沒有直接回答這個問題。在選擇聲明中插入聲明

,我想知道是否有一種方法要麼串聯或放置INSERTDELETEUPDATE聲明成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') 

這裏最重要的事情是越來越IN SERT語句以非常規方式進入SELECT語句。

謝謝你,希望這會帶來一些好的對話/想法/結果!

原因想知道這一點:

  1. 我們目前的DBMS(魚缸)不允許我們使用UPDATE,DELETE或INSERT語句是SQL編譯器,我們希望羣衆改變我們字段/清理我們的表格。
  2. 要知道是否有可能
+1

你有一個具體的問題,你試圖解決或這是一個練習? – n8wrl

+2

這個語法在任何數據庫中都是不允許的,所以我猜答案是「否」。 Postgres確實做了類似的事情,在CTE中允許DML語句。 MySQL在單個語句中沒有任何類似的功能。 –

+0

@ n8wrl對於我目前正在處理的事情來說,這是一個大問題。這不是任務或任何事情。事實上,我從來沒有在思考和體驗之前看到過這件事,我很好奇這個想法/概念是否可以實現。 – Ashton

回答

1

你可能有一個selectinsert而不是其他方式 左右。

一個選擇插入語句中可用於從表中的值複製到另一個。 (你只是從另一個寫入到表中的讀取後)

但內選擇的插入就沒有意義了!你有什麼打算,當你從一個表運行的選擇(或讀取數據)來插入?(怎麼可能寫的時候你只允許讀?

你的情況,如果您無法訪問插入內容,那麼放置語句的位置並不重要,因爲您不允許這樣做!

但是,如果你在談論你的查詢引擎/數據庫包裝不允許直接插入,那麼它可能是因爲它需要一個應用程序/程序插入數據到而不僅僅是一個查詢(因爲你的引擎不已經有能力執行該操作)。

+0

你是對的它沒有任何意義!這就是爲什麼我想考慮這個想法,看看會有什麼結果。我的治癒DBMS不允許我在它的編譯器中使用SELECT語句,但我想要解決這個問題。感謝您的輸入/答覆! – Ashton