色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql根據條件動態顯示列

錢諍諍2年前11瀏覽0評論

MySQL是非常流行的關系型數據庫管理系統,可以通過多種查詢語句來操作數據庫中的數據。有時候我們需要根據條件動態顯示特定的列,下面將介紹如何使用MySQL實現這個功能。

我們先來看一個簡單的表:

CREATE TABLE `students` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '',
`gender` varchar(10) NOT NULL DEFAULT '',
`age` int(11) NOT NULL DEFAULT '0',
`major` varchar(50) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

現在我們要根據年齡和專業篩選出不同的列,代碼如下:

SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(CASE WHEN `major` = ''',
`major`,
''' THEN `',
`age`,
'` ELSE NULL END) AS `',
`major`, '_', `age`, '`'
)
) INTO @sql
FROM
`students`;
SET @sql = CONCAT('SELECT `name`, ', @sql, ' FROM `students` GROUP BY `name`');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

這段代碼的實現方法是動態生成SQL語句,再執行。首先,我們用GROUP_CONCAT將不同的列名拼接為字符串@sql,拼接的列名形式為`major_age`,例如`IT_20`表示專業為IT,年齡為20的列。接下來,我們再將SELECT語句和@sql拼接起來,形成完整的SQL語句。最后,使用PREPARE和EXECUTE分別準備和執行SQL語句。

總之,MySQL可以根據條件動態顯示特定的列。我們可以用動態生成SQL語句的方法來實現這個功能。