2013-05-13 34 views
0

我已經閱讀了許多有點類似的問題,並嘗試了所有我能想到的,沒有成功。我想我已經找到了基於單個表格的問題,或者不需要獲得明確的專欄,但是完全不是我的情況。如何根據max datetime(另一列)選擇不同的列,並在MySQL中連接兩個表?

我想基於這些表不同TICKER_SYMBOL和相應的ticker_name和最新ticker_quote:

CREATE TABLE `tickers` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `ticker_symbol` varchar(6) COLLATE utf8_unicode_ci NOT NULL, 
    `ticker_name` varchar(128) COLLATE utf8_unicode_ci NOT NULL, 
    `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 



CREATE TABLE `ticker_quotes` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `ticker_symbol` varchar(6) COLLATE utf8_unicode_ci NOT NULL, 
    `ticker_quote` float(8,2) NOT NULL, 
    `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=111 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 
+0

哪些是該做的列這些表之間的連接? – medina 2013-05-13 04:50:11

回答

0

嘗試

SELECT q.ticker_symbol, t.ticker_name, q.ticker_quote 
    FROM (SELECT ticker_symbol, MAX(created_at) created_at 
      FROM ticker_quotes 
     GROUP BY ticker_symbol) m JOIN 
     ticker_quotes q ON m.ticker_symbol = q.ticker_symbol 
         AND m.created_at = q.created_at JOIN 
     tickers t ON q.ticker_symbol = t.ticker_symbol 

SQLFiddle

+0

我只是試過了一個快速測試,而且看起來確實工作。非常感謝! – henryC 2013-05-13 08:39:48

相關問題