MySQL,根据外键选择多行作为一行
我有以下两张桌子MySQL,根据外键选择多行作为一行,mysql,sql,Mysql,Sql,我有以下两张桌子 | ID | NAME | AGE | |----|------|-----| | 0 | John | 30 | | 1 | Nick | 35 | | 2 | Mike | 30 | | USERID | FRUIT | |--------|------------| | 0 | apple | | 0 | orange | | 1 | banana | | 1 | tomat
| ID | NAME | AGE |
|----|------|-----|
| 0 | John | 30 |
| 1 | Nick | 35 |
| 2 | Mike | 30 |
| USERID | FRUIT |
|--------|------------|
| 0 | apple |
| 0 | orange |
| 1 | banana |
| 1 | tomato |
| 1 | grape |
| 1 | watermelon |
| 2 | pear |
| 2 | cherry |
我使用这个查询是为了得到每个年龄SELECT users.name,group_concat(水果)的用户想要的水果
来自用户、水果
其中users.id=fruits.userid和users.age试试这个(填充函数):
这将产生:
Name Fruits
John apple, orange
Mike pear, cherry
正如我在主要帖子中所说,我使用GROUP_CONCAT()做了一些测试,比如SELECT users.name,GROUP_CONCAT(fruit)from users,fruits where users.id=fruits.userid和users.ageSide在您的JOIN
语法中注意:谢谢,这样做了。为了从第三个表中添加数据(具有类似的形式),我应该如何更改查询?我尝试了SELECT users.name,group_concat(水果),group_concat(蔬菜)FROM users,fruits,vegets WHERE users.id=fruits.userid和users.id=vegets.userid和users.age尝试这个:group_concat(concat_WS('',fruit,vegeture))工作得不太好,我想我在rest查询中做错了。这是一把小提琴,这有用吗?从用户、水果、蔬菜中选择users.name、GROUP_CONCAT(不同的水果)、GROUP_CONCAT(不同的蔬菜),其中users.id=水果.userid和users.id=蔬菜.userid和users.age
| NAME | FRUIT |
|------|--------|
| John | apple |
| John | orange |
| Mike | pear |
| Mike | cherry |
| NAME | FRUIT |
|------|---------------|
| John | apple,orange |
| Mike | pear,cherry |
| NAME | FRUIT | FRUIT |
|------|--------|--------|
| John | apple | orange |
| Mike | pear | cherry |
SELECT users.name, group_concat( fruit )
FROM users,fruits
WHERE users.id=fruits.userid AND users.age<34
group by user.name
CREATE TABLE #Test(
Name VARCHAR(100),
FRUIT VARCHAR(100)
)
INSERT INTO #Test VALUES
('John', 'apple'),
('John', 'orange'),
('Mike', 'pear'),
('Mike', 'cherry')
SELECT Name,
STUFF((SELECT ', ' + FRUIT
FROM #Test t1
WHERE t1.Name = t2.Name
FOR XML PATH(''), TYPE).value('.','VARCHAR(MAX)'),1,2,'') AS 'Fruits'
FROM #Test t2
Group by Name
Drop Table #Test
Name Fruits
John apple, orange
Mike pear, cherry