簡體   English   中英

mysql查詢動態更新

[英]mysql query dynamic update

解決

我有一個 mysql 表(table1),其中包含許多具有單個 ID 的列。

表名: table1

列:從“pt1 到 pt1000”

編號= 1

  • 我有一個更新列中數據的查詢,一次 10 個數據
  • 我需要一個獨特的動態查詢,在每次提交時按順序插入 10 個值。

示例

  1. 發送查詢更新命令(來自 php 形式)

  2. 我在從“pt1”到“pt10”的列中插入10個值

  3. 使用其他數據發送查詢更新命令(來自相同的 php 表格)

  4. 我在從“pt11”到“pt21”的列中插入10個值,依此類推

問題:如何設置查詢,以便它知道將值插入到正確的列中,而不是總是在相同的列中?

謝謝大家幫助我

------------------編輯------------------

我將傳遞手冊(輸入和 select 值)從 php 表單解析為查詢的 php 頁面,並將此值插入變量中以構造動態查詢。

例如:

IN PHP FORM:有兩個 select

1 - Select DB(值 = “name_db_i_want_to_update”)

2 - Select 列(值 = “1,2,3,4,5,6,7 等”)

在 PHP 查詢頁面:

  1. Select DB 值為“$ db”
  2. Select 列為“$ set”
  3. 帶有查詢集的 IF 語句。 IF 列值 = 1 ELSE IF 等,$ setquery = pt1 = "value1","value2" 等。
  4. 構造動態查詢( UPDATE $db SET $setquery WHERE id=1 )

這不是最好的解決方案,當然作為編程邏輯也是錯誤的,但它確實有效。

感謝大家的幫助

您應該將您的設計更改為類似 mytable2 的東西,以收集數據將需要更多的 sql 編程,但以您需要的形式獲取數據應該是一次性的事情。

如果你堅持保留你的設計,你可以使用像 blow 這樣的存儲過程來填充你的表,但你必須知道所屬的序列,這也可以自動化,另一個表在你已經填充的數據 position存儲,但動態sql的基本原理是一樣的。

 CREATE TABLE mytable2(id int, pos int, value int)
 INSERT INTO mytable2 VALUES (1,1,1),(1,2,2),(1,3,3),(1,4,4),(1,5,5),(1,6,6)
 CREATE TABLE mytable(id int, pt1 int, pt2 int, pt3 int, pt4 int, pt5 int, pt6 int)
 CREATE PROCEDURE `new_routine` (_id int, _sequence int, _pt1 int, _pt2 int,_pt3 int) BEGIN IF _sequence = 0 then SET @sql:= CONCAT('INSERT INTO mytable (id,pt1,pt2,pt3) VALUES (',_id,',',_pt1,',',_pt2,',',_pt3,')'); ELSE SET @sql:= CONCAT('UPDATE mytable SET pt',1 +((_sequence -1) * 3),'= ',_pt1,', pt',2 +((_sequence -1) * 3),'= ',_pt2,', pt',3 +((_sequence -1) * 3),'= ',_pt3,' WHERE id = ',_id); END IF; PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END
 CALL new_routine(1,0,1,1,1);
 CALL new_routine(1,1,2,2,2)
 CALL new_routine(1,2,3,3,3)
 SELECT * FROM mytable
 編號 |  pt1 |  pt2 |  pt3 |  pt4 |  pt5 |  pt6 -: |  --: |  --: |  --: |  --: |  --: |  --: 1 |  2 |  2 |  2 |  3 |  3 |  3
 SELECT * FROM mytable2
 編號 | 位置 | 值-: |  --: |  ----: 1 |  1 |  1 1 |  2 |  2 1 |  3 |  3 1 |  4 |  4 1 |  5 |  5 1 |  6 |  6

db<> 在這里擺弄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM