我想根据日期选择当前有效的记录。我需要做的是创建一个视图,以便“选择所有内容”子查询不起作用。
但是现在我只能选择一列,因为它说
操作数应包含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
答案 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;