首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询中的expolde字段

查询中的expolde字段
EN

Stack Overflow用户
提问于 2010-11-02 18:55:13
回答 1查看 38关注 0票数 0

我在MySQL中有两个表。

代码语言:javascript
复制
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、马丁在伦敦、莫斯科、东京

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-02 20:27:33

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

代码语言:javascript
复制
id (auto increment)
user_id 
city_id

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

代码语言:javascript
复制
id  user_id  city_id
1   1        5
2   1        4
3   1        2
4   2        5
5   1        1

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

代码语言:javascript
复制
     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 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4076962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档