Mysql SQL从用户id列表获取user.email

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,但我

我正在尝试做一个简单的SQL查询,但很难做到正确

我有一个名为trips的表,它有一个created_at列和一个user_id列(以及其他内容)

我也有用户表的名称和电子邮件

我正试图得到一个名单的用户名和电子邮件,张贴了一次旅行在过去12个月

到目前为止,我已编写了此查询:

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'