2016-02-17 100 views
0

我創建空的觀點有以下查詢:插入記錄到MySQL視圖

CREATE VIEW `test` AS select * from `configurations` where 0; 

考慮configurations表有100條記錄與主鍵id從開始到0100

我想在循環內插入數據的視圖塊爲10

我無法獲得任何解決方案。任何人都可以提供一些提示。


更新: 按照以下幾個步驟我想執行。

  1. 創建空的觀點(我實現了這個)
  2. 我有100條記錄在其基表。
  3. 現在,我想我的觀點表示任何10記錄基於id像[where id IN (1,5,8,3,6,67,34,23,45,99)]
  4. 又有些操作後,我想更多的10個記錄從基表中選擇。像[where id IN (11,55,88,33,66,27,43,23,15,19)]

希望我很清楚。

+0

您的問題很混亂,請確認您是否試圖「將數據導出視圖」或「將數據插入視圖中使用的表格」?視圖不會自己存儲數據。此外,「哪裏0」似乎沒有幫助 - 這應該達到什麼?這當然意味着你的觀點將永遠是空的? – puppyFlo

+0

@ puppyFlo請檢查我的更新。 – Parixit

+0

我想這是不可能的,因爲'視圖'將最初創建與最初應用條件檢索的數據。它是數據的表示。這不是物理表,所以我不能定期在其中插入更多數據。謝了哥們! – Parixit

回答

0

好的,我會再試一次。

這是對視圖的誤解 - 應該使用視圖以固定方式從實際表中檢查現有數據,以便可以使用視圖來顯示ID值小於25的所有配置等等。

你所描述的聽起來像所有你需要做的是發出選擇到你的主表與不同的ID列表檢索。

是否有任何理由你不這樣做:

SELECT * FROM configurations WHERE id in (1,4,6,7,8,9); 
SELECT * FROM configurations WHERE id in (5,51,2,45,6); 

編輯:

到您的配置表中添加列的「鑑於」的指標。更新你的視圖,只顯示記錄in_view = 1。然後,只需更新配置表,並將這些有趣的記錄設置爲in_view = 1

希望有幫助嗎?

+0

我有'配置'表中的數百萬條記錄,我想存儲假設一些記錄(它符合我的計算)。因此,我開始處理大量的1000條記錄,並對它們進行計算,如果它們滿足我的需要,那麼我想將它們添加到「視圖」中。因此,在創建視圖的那一刻,我不能像'where in()'那樣做因爲我有數百萬條記錄,並且可能不適合IN()子句。 – Parixit

+0

@Parixit - 聽起來你根本不需要視圖,你想要的是另一張表來存儲你的配置的子集。這可能聽起來不正確,因爲您不想複製數據,但它滿足處理源數據卡盤的要求。用大量的IN語句更新視圖是不正確的。作爲一種替代建議,也許你可以在你的配置表中添加一個tinyint列,將它稱爲「in_view」或類似的,然後讓你的視圖顯示該列設置爲1的所有記錄 - 這聽起來怎麼樣? – puppyFlo