Mysql SQL从用户id列表获取user.email
我正在尝试做一个简单的SQL查询,但很难做到正确 我有一个名为trips的表,它有一个created_at列和一个user_id列(以及其他内容) 我也有用户表的名称和电子邮件 我正试图得到一个名单的用户名和电子邮件,张贴了一次旅行在过去12个月 到目前为止,我已编写了此查询:Mysql SQL从用户id列表获取user.email,mysql,Mysql,我正在尝试做一个简单的SQL查询,但很难做到正确 我有一个名为trips的表,它有一个created_at列和一个user_id列(以及其他内容) 我也有用户表的名称和电子邮件 我正试图得到一个名单的用户名和电子邮件,张贴了一次旅行在过去12个月 到目前为止,我已编写了此查询: SELECT `user_id` FROM `trips` WHERE trips.created_at > '2014-03-01 00:00:00' 它为我提供了过去12个月内创建旅行的用户的用户id,但我
SELECT `user_id`
FROM `trips`
WHERE trips.created_at > '2014-03-01 00:00:00'
它为我提供了过去12个月内创建旅行的用户的用户id,但我不知道如何扩展它,因此它会从用户表中提供他们的姓名和电子邮件。您还需要查询其他表。我假设您的用户表具有用户名user。它有电子邮件名称和电子邮件列
SELECT user.name, user.email
FROM `trips`, user
where user.id=trips.userid
and trips.created_at > '2014-03-01 00:00:00'
您也可以使用嵌套查询,此查询将根据嵌套查询返回的ID显示所有用户
select * from user where id in (
SELECT `user_id`
FROM `trips`
WHERE trips.created_at > '2014-03-01 00:00:00'
)
你也可以通过连接来完成。像这样:
SELECT users.name ,users.email,users.`user_id`
FROM `trips`
JOIN users
ON user.user_id=trips.userid
WHERE trips.created_at > '2014-03-01 00:00:00'
或者,您也可以使用现有的:
SELECT
users.name ,
users.email,
users.`user_id`
FROM
users
WHERE EXISTS
(
SELECT NULL
FROM trips
WHERE trips.created_at > '2014-03-01 00:00:00'
AND user.user_id=trips.userid
)
使用连接
SELECT t.user_id, u.user_id, u.user_name
FROM trips t
JOIN users u on t.user_id=u.user_id
WHERE trips.created_at > '2014-03-01 00:00:00'
您是否使用不同的表来获取用户详细信息。如果
名称
与在字段中创建的在同一个表中,则会出现这种情况。@parakmiakos它应该在同一个类中,否则您应该加入表重新阅读问题。有两个不同的表,因此需要连接。
SELECT t.user_id, u.user_id, u.user_name
FROM trips t
JOIN users u on t.user_id=u.user_id
WHERE trips.created_at > '2014-03-01 00:00:00'