簡體   English   中英

如何在最大日期時間(另一個列)的基礎上選擇不同的列,還要在MySQL中連接兩個表?

[英]How can I select distinct column based on max datetime (another column) also joining two tables in 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

嘗試

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM