[英]How to only show a subset of data in a table by using alter and select in mysql?
[英]Alter table using sub select
我有兩張桌子。 一個是字段信息表,另一個是字段數據表。
默認情況下,所有字段數據表列都設置為某種文本字段(varchar,text等)
我想做的是這個。 而不是創建手動ALTER TABLE查詢:
ALTER TABLE `field_data`
CHANGE COLUMN `field_id_2` `field_id_2` decimal NOT NULL,
CHANGE COLUMN `field_id_3` `field_id_3` decimal NOT NULL,
CHANGE COLUMN `field_id_22` `field_id_22` decimal NOT NULL,
CHANGE COLUMN `field_id_23` `field_id_23` decimal NOT NULL,
CHANGE COLUMN `field_id_25` `field_id_25` decimal NOT NULL,
CHANGE COLUMN `field_id_27` `field_id_27` decimal NOT NULL,
CHANGE COLUMN `field_id_30` `field_id_30` decimal NOT NULL,
CHANGE COLUMN `field_id_66` `field_id_66` decimal NOT NULL,
CHANGE COLUMN `field_id_72` `field_id_72` decimal NOT NULL;
我想基於field_info表編寫動態ALTER TABLE查詢,現在我通過執行此查詢獲得這些字段ID:
SELECT field_id FROM `field_info` WHERE `field_type` = 'a_decimal_field'
返回值:2,3,22,23等。
所以我需要一個查詢(如果可能的話),根據子選擇將field_id_連接到每個子選擇的結果來改變表,並將該列的類型更改為十進制。
我知道我可以通過構建查詢在php中執行此操作,但我特別尋找一個純mysql解決方案,如果可能的話。
SELECT CONCAT('ALTER TABLE `field_data` ',
GROUP_CONCAT(' CHANGE COLUMN `field_id_', field_id, '` ',
' `field_id_', field_id, '` DECIMAL NOT NULL'))
FROM `field_info`
WHERE `field_type` = 'a_decimal_field'
INTO @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.