0

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

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

操作数应包含 1 列

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

对于这个简单的示例(下面的链接),假设我还需要获取电话号码..知道我应该如何去做吗?谢谢。

SQL提琴手: http ://www.sqlfiddle.com/#!2/1ff7e/1

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

SQL提琴手: http ://www.sqlfiddle.com/#!2/1ff7e/3

还是不行……zzz……我又加了几个测试数据,结果还是不行!

SQL 提琴手: http ://www.sqlfiddle.com/#!2/360c1/1

我的错。这是工作!我为历史插入了两个重复的主键。谢谢大家!!!!

SQL 提琴手: http ://www.sqlfiddle.com/#!2/274c5/1

4

1 回答 1

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;
于 2013-04-18T14:30:40.370 回答