在特定日期之前左连接最近的记录

时间:2013-04-18 14:06:25

标签: mysql database view left-join

我想根据日期选择当前有效的记录。我需要做的是创建一个视图,以便“选择所有内容”子查询不起作用。

但是现在我只能选择一列,因为它说

  

操作数应包含1列

我可以复制我想要获得的所有字段的选择但是它将具有广泛的性能,而且我在历史表上有很多列。

对于这个简单的例子(下面的链接),我们说我需要获取电话号码..任何想法我应该怎么做呢?感谢。

SQL Fiddler: http://www.sqlfiddle.com/#!2/1ff7e/1

我想我明白了!似乎工作但需要更多记录才能尝试。

SQL Fiddler: http://www.sqlfiddle.com/#!2/1ff7e/3

仍然没有工作...... zzz ......我添加了一些测试数据,结果证明它不起作用!

SQL Fiddler: http://www.sqlfiddle.com/#!2/360c1/1

我的坏。 正在工作!我为历史记录插入了两个重复的主键。谢谢大家!!!!

SQL Fiddler: http://www.sqlfiddle.com/#!2/274c5/1

1 个答案:

答案 0 :(得分:0)

您可以在select子句中添加另一个子查询:

SELECT user.username, user.password,
       (SELECT uh.name FROM user_history uh WHERE uh.user_id = user.user_id AND effective_date <= '2013-04-18' ORDER BY effective_date DESC LIMIT 1), 
       (SELECT uh.phone_number FROM user_history uh WHERE uh.user_id = user.user_id AND effective_date <= '2013-04-18' ORDER BY effective_date DESC LIMIT 1) 
FROM user
ORDER BY username;