gpt4 book ai didi

mysql - 展开查询中的字段

转载 作者:行者123 更新时间:2023-11-29 14:57:56 25 4
gpt4 key购买 nike

我在 MySQL 中有两个表。

CREATE TABLE IF NOT EXISTS `city` (
`city_id` int(11) NOT NULL AUTO_INCREMENT,
`city` varchar(50) NOT NULL,
PRIMARY KEY (`city_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;


INSERT INTO `city` (`city_id`, `city`) VALUES
(1, 'London'),
(2, 'Moscow'),
(3, 'Perth'),
(4, 'tokyo'),
(5, 'seoul');


CREATE TABLE IF NOT EXISTS `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(20) NOT NULL,
`cities_travel` varchar(50) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;


INSERT INTO `user` (`user_id`, `user_name`, `cities_travel`) VALUES
(1, 'todd', '5'),
(2, 'martin', '1,2,4');

我试图显示如下,

1 托德 首尔
2    马丁    伦敦、莫斯科、东京

如何构建查询才能获得高于结果的结果?

最佳答案

是的,更好的方法是使用 feids 创建一个单独的表“usercitytrans

id (auto increment)
user_id
city_id

然后将数据保存到这个事务表中。所以你可能有这样的数据

id  user_id  city_id
1 1 5
2 1 4
3 1 2
4 2 5
5 1 1

在这种情况下,您可以使用此sql获取逗号分隔的城市

     select u.user_id, user_name, 
group_concat(city_name separator ', ' ) as usercities from (user as u left join usercitytrans as ut
on u.user_id = ut.user_id) left join city as c
on ut.city_id = c.city_id
where user_id = 1
group by ut.city_id

关于mysql - 展开查询中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4076962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com