mysql - 从mysql中的同一列中选择多个元素

标签 mysql

我目前正在尝试从我的数据库返回一些东西,但我没有得到我想要的东西。 我有一个返回给我的查询:

[{username: 'tupac',
age: 20,
popularity: 35,
city: 'Paris',
country: 'France',
latitude: 48.8534,
longitude: 2.3488,
tag_id: 172 }]

但是如果 tag_id 列中有多个条目怎么办? 我可以返回吗?如果有 3 个 tag_id,我今天拥有它的方式会返回 3 个对象。 所以如果 tupac 有 3 或 4 个 tag_id 链接到他,我可以有这样的东西吗?

[{username: 'tupac',
age: 20,
popularity: 35,
city: 'Paris',
country: 'France',
latitude: 48.8534,
longitude: 2.3488,
tag_id: 172 
tag_id: 173
tag_id: 175} ]

这是我的实际查询:

SELECT usersinfo.username, usersinfo.age, 
usersinfo.popularity, userlocation.city, userlocation.country, 
userlocation.latitude, userlocation.longitude , user_tags.tag_id

FROM usersinfo, userlocation, user_tags
WHERE usersinfo.sex = "f" 
AND usersinfo.orientation = "s" 
AND usersinfo.username = userlocation.username 
AND usersinfo.username = user_tags.username
AND usersinfo.username != 'natedogg'

我一直在阅读一些东西,但运算符“IN”或“GROUP_CONTACT”都无法帮助我。也许我做错了?

感谢您的帮助!

最佳答案

试试这个:

SELECT 
    usersinfo.username, 
    usersinfo.age, 
    usersinfo.popularity, 
    userlocation.city, 
    userlocation.country, 
    userlocation.latitude, 
    userlocation.longitude , 
    (select group_concat(user_tags.tag_id)
     from user_tags
     where user_tags.username = usersinfo.username
     group by username) as tag_id
FROM usersinfo
    inner join userlocation on usersinfo.username = userlocation.username 
WHERE usersinfo.sex = "f" 
AND usersinfo.orientation = "s" 
AND usersinfo.username = user_tags.username
AND usersinfo.username != 'natedogg';

请注意,我更改了您的 where 子句并添加了一个连接。

关于mysql - 从mysql中的同一列中选择多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41938794/

相关文章:

PHP fwrite();创建额外的角色

php - 未定义索引名称

javascript - 无法创建MySQL数据库的链式分页

php - 将此分页脚本转换为搜索分页脚本的逻辑

php - 来自几个按 ASC 排序的 MySQL 表的数据

javascript - KnexJS 原始查询未按预期工作

mysql - 根据唯一用户名计算记录数

php - 创建表 mysql

php - MySQL返回静态字符串

php pdo从具有多个where子句的多个表中进行选择