2013-04-18 50 views
0

我想根據日期選擇當前活動的記錄。我需要做的是創建一個視圖,這樣'select everything'子查詢就不會起作用。在某個日期前加入最近的記錄

但現在我只能選擇一列,因爲它說

操作數應包含1列(S)

我可以重複選擇所有我想要得到的字段,但它的表現會很廣泛,而且我在歷史表上有很多列。

對於這個簡單的例子(下面的鏈接),可以說我需要獲得電話號碼..任何想法我應該怎麼做呢?謝謝。

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

回答

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; 
+0

我,似乎工作(見更新的問題)另一種方式,這種方式會造成太大的性能影響。我有十幾個專欄..謝謝你的幫助。 – Rejinderi