SQL从user_id列表中获取user.emails

时间:2015-03-24 08:34:13

标签: mysql

我正在尝试做一个简单的SQL查询,但我正在努力做到正确。

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

我还有用户名表和电子邮件表。

我正在尝试获取过去12个月内发布过旅行的用户名和电子邮件列表。

到目前为止我写过这个查询:

SELECT `user_id` 
FROM `trips`
WHERE trips.created_at > '2014-03-01 00:00:00'

这为我在过去12个月内创建旅行的用户提供了user_id,但我不知道如何扩展它,因此它从用户表中提供了他们的姓名和电子邮件。

4 个答案:

答案 0 :(得分:2)

您还需要查询其他表。我假设您的用户表具有名称用户。它有电子邮件名称和电子邮件列

 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'
 )

答案 1 :(得分:0)

你也可以用JOIN来做。像这样:

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'

或者你可以用exists:

来做
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
)

答案 2 :(得分:0)

使用JOINS ..

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'

答案 3 :(得分:-1)

select user_id, name, emails from trips where created_at>'2014-03-01 00:00:00'