你好,是這樣的,我這有兩張表是一對多的關系,現在需要合并成一張表且同一個人只有一條資料,我在網上找了個sql語言。
原表是這樣子的
預計效果是這樣子的
但是我實際上查找到的是這樣子的

這是建表陳述句:SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`age` int(5) NULL DEFAULT NULL,
`hobby` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;
-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES (1, '張三', 18, '讀書');
INSERT INTO `t_user` VALUES (2, '張三', 18, '打游戲');
INSERT INTO `t_user` VALUES (3, '張三', 18, '寫代碼');
INSERT INTO `t_user` VALUES (4, '王五', 20, '吃飯');
INSERT INTO `t_user` VALUES (5, '王五', 20, '睡覺');
INSERT INTO `t_user` VALUES (6, '王五', 20, '打豆豆');
這是查詢陳述句:set @name = '王五';
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'(select hobby from (SELECT @rownum:=@rownum+1 AS rownum, t_user.*
FROM (SELECT @rownum:=0) r, t_user where name="',@name,'") t where t.rownum = ',
t.rownum,
') AS ',
CONCAT('hobby',rownum)
)
) INTO @sql
FROM (SELECT @rownum:=@rownum+1 AS rownum, t_user.*
FROM (SELECT @rownum:=0) r, t_user where name=@name) t;
SET @sql = CONCAT('select distinct name,age, ', @sql, ' from t_user where name ="',@name,'"');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
uj5u.com熱心網友回復:
有意思的是我把sql陳述句拆分開來;
圖片中 紅色框處,每一句sql陳述句都能夠 搜索到資料, 

但是一旦合并起來 第二三個資料就沒了

求問大佬們 這是為啥子呢 難道跟mysql版本有關么·
uj5u.com熱心網友回復:
每一個用戶變數@rownum取新的名字,不要重復使用一個變數轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/113377.html
標籤:疑難問題
上一篇:不知道怎樣求候選碼
下一篇:多項式求和程式的撰寫和實作
