2014-10-30 69 views
1

我有這樣的MySQL ::集團通過其中date時間最大

idCHAT USER_NAME TEXT  CURRENT_DATE_TIME CHAT_COUNTERPARTY party 
54  taruna  red hat 2014-10-30 05:44:26 pooja   pooja 
55  pooja  cat  2014-10-30 05:45:48 taruna   pooja 

表結果下面的查詢執行後

SELECT `idCHAT`, `USER_NAME`, `TEXT`, `CURRENT_DATE_TIME`, `CHAT_COUNTERPARTY`, 
      IF(USER_NAME='taruna',`CHAT_COUNTERPARTY`,`USER_NAME`) AS party 
    FROM ( 
     SELECT c.* 
      FROM chat c 
      JOIN (
       SELECT MAX(`CURRENT_DATE_TIME`) AS CURRENT_DATE_TIME, `CHAT_COUNTERPARTY` 
       FROM chat 
       GROUP BY `CHAT_COUNTERPARTY` 
      ) c1 USING (CURRENT_DATE_TIME,`CHAT_COUNTERPARTY`) 
      WHERE c.USER_NAME='taruna' 
     UNION 
     SELECT c.* 
      FROM chat c 
      JOIN (
       SELECT MAX(`CURRENT_DATE_TIME`) AS CURRENT_DATE_TIME,`USER_NAME` 
     FROM chat GROUP BY `USER_NAME` 
      ) c1 USING (CURRENT_DATE_TIME,`USER_NAME`) 
      WHERE c.CHAT_COUNTERPARTY='taruna' 
    ) res 

現在我想通過組與黨和想要得到的數據最大日期時間,即idChat 55.我如何添加組中的因爲當前組通過給我頂行或任何其他如果結果表很大。

CREATE TABLE IF NOT EXISTS `chat` (
    `idCHAT` int(11) NOT NULL AUTO_INCREMENT, 
    `USER_NAME` varchar(12) NOT NULL, 
    `TEXT` varchar(512) DEFAULT NULL, 
    `CURRENT_DATE_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `CHAT_COUNTERPARTY` varchar(12) NOT NULL, 
    PRIMARY KEY (`idCHAT`), 
    KEY `CHAT_CHAT_COUNTERPARTY_IDX` (`CHAT_COUNTERPARTY`), 
    KEY `CHAT_CURRENT_DATE_TIME_IDX` (`CURRENT_DATE_TIME`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=56 ; 

-- 
-- Dumping data for table `chat` 
-- 

INSERT INTO `chat` (`idCHAT`, `USER_NAME`, `TEXT`, `CURRENT_DATE_TIME`, `CHAT_COUNTERPARTY`) 
    VALUES 
(1, 'taruna', 'hello', '2014-10-30 11:57:11', 'pooja'), 
(2, 'pooja', 'hey', '2014-10-30 11:57:36', 'taruna'), 
(3, 'taruna', 'r u getting my msg', '2014-10-30 11:58:07', 'pooja'), 
(4, 'pooja', 'yes', '2014-10-30 11:58:12', 'taruna'), 
(5, 'pooja', 'yes', '2014-10-30 11:58:42', 'taruna'), 
(6, 'pooja', 'u will', '2014-10-30 11:59:04', 'taruna'), 
(7, 'taruna', ':)', '2014-10-30 12:00:17', 'pooja'), 
(8, 'pooja', 'why u dont reply me', '2014-10-30 12:00:21', 'taruna'), 
(9, 'pooja', '?', '2014-10-30 12:00:25', 'taruna'), 
(10, 'taruna', 'i want to buy your lappy', '2014-10-30 12:00:57', 'pooja'), 
(11, 'pooja', 'sure', '2014-10-30 12:01:19', 'taruna'), 
(12, 'taruna', 'fr hw much', '2014-10-30 12:01:34', 'pooja'), 
(13, 'pooja', '1 lakh', '2014-10-30 12:01:44', 'taruna'), 
(14, 'taruna', 'dimag khrb h???', '2014-10-30 12:02:23', 'pooja'), 
(15, 'taruna', 'der??', '2014-10-30 12:04:08', 'pooja'), 
(16, 'taruna', 'test', '2014-10-30 12:04:10', 'pooja'), 
(17, 'taruna', 'gv sm rply', '2014-10-30 12:11:18', 'pooja'), 
(18, 'pooja', 'test', '2014-10-30 12:11:32', 'taruna'), 
(19, 'taruna', '????', '2014-10-30 12:11:43', 'pooja'), 
(20, 'pooja', 'u got my msgs', '2014-10-30 12:11:48', 'taruna'), 
(21, 'taruna', 'anything else??', '2014-10-30 12:11:50', 'pooja'), 
(22, 'pooja', '??', '2014-10-30 12:11:54', 'taruna'), 
(23, 'taruna', 'yupp', '2014-10-30 12:12:08', 'pooja'), 
(24, 'taruna', 'hie', '2014-10-30 12:12:22', 'pooja'), 
(25, 'taruna', 'hlo', '2014-10-30 12:12:30', 'pooja'), 
(26, 'pooja', 'hi', '2014-10-30 12:13:09', 'taruna'), 
(27, 'pooja', 'hi', '2014-10-30 12:13:16', 'taruna'), 
(28, 'pooja', 'taruna', '2014-10-30 12:13:33', 'taruna'), 
(29, 'taruna', 'hws u', '2014-10-30 12:13:35', 'pooja'), 
(30, 'taruna', 'ring nhi ho rha phn', '2014-10-30 12:14:36', 'pooja'), 
(31, 'taruna', 'jai ho', '2014-10-30 12:15:52', 'pooja'), 
(32, 'pooja', 'I find error', '2014-10-30 12:17:33', 'taruna'), 
(33, 'pooja', 'u got it', '2014-10-30 12:17:45', 'taruna'), 
(34, 'taruna', 'yupppp', '2014-10-30 12:17:59', 'pooja'), 
(35, 'pooja', 'r u well??', '2014-10-30 12:19:40', 'taruna'), 
(36, 'pooja', 'hey reply', '2014-10-30 12:23:07', 'taruna'), 
(37, 'pooja', 'taruna', '2014-10-30 12:23:11', 'taruna'), 
(38, 'pooja', 'hey', '2014-10-30 12:23:15', 'taruna'), 
(39, 'pooja', 'hey', '2014-10-30 12:23:17', 'taruna'), 
(40, 'pooja', 'hey', '2014-10-30 12:23:18', 'taruna'), 
(41, 'pooja', 'hey', '2014-10-30 12:23:19', 'taruna'), 
(42, 'pooja', 'hi', '2014-10-30 12:24:06', 'taruna'), 
(43, 'pooja', 'taru una', '2014-10-30 12:31:44', 'taruna'), 
(44, 'taruna', 'its taruna', '2014-10-30 12:32:53', 'pooja'), 
(45, 'taruna', 'nt taruuna', '2014-10-30 12:34:22', 'pooja'), 
(46, 'pooja', 'whos u', '2014-10-30 12:35:42', 'taruna'), 
(47, 'taruna', 'Taruna Sharma', '2014-10-30 12:36:05', 'pooja'), 
(48, 'pooja', 'hi', '2014-10-30 12:39:27', 'taruna'), 
(49, 'taruna', 'hlo', '2014-10-30 12:40:00', 'pooja'), 
(50, 'pooja', 'hi', '2014-10-30 12:40:56', 'taruna'), 
(51, 'taruna', '133', '2014-10-30 12:41:38', 'pooja'), 
(52, 'taruna', '1234', '2014-10-30 12:41:41', 'pooja'), 
(53, 'pooja', 'hat', '2014-10-30 12:42:14', 'taruna'), 
(54, 'taruna', 'red hat', '2014-10-30 12:44:26', 'pooja'), 
(55, 'pooja', 'cat', '2014-10-30 12:45:48', 'taruna'); 
+0

我可能失去了一些東西,但爲什麼不 'SELECT * FROM聊天WHERE黨= 'POOJA' ORDER BY CURRENT_DATE_TIME DESC'工作? – Keeleon 2014-10-30 15:19:39

+0

@ Keeleon請檢查編輯我更新了表 – 2014-10-30 15:42:19

+0

哦好吧我明白我錯過了什麼。那麼你是否只想從查詢中得到一個結果?我添加了'ORDER BY CURRENT_DATE_TIME DESC',它翻轉了你發佈的兩個結果......然後你可以添加'limit 1'並且只能得到一個結果。 – Keeleon 2014-10-30 17:07:50

回答

0

我測試了這個與多個convos,這應該是好的。

SELECT * FROM 
    (SELECT *, 
    IF(USER_NAME='taruna',CHAT_COUNTERPARTY,USER_NAME)AS `party` 

    FROM `chat` 

    WHERE `USER_NAME` = 'taruna' OR `CHAT_COUNTERPARTY` = 'taruna' 

    ORDER BY `CURRENT_DATE_TIME` DESC) as `parties` 

GROUP BY `parties`.`party` 
+0

不,不,不......我想組隊,因爲可能會有更多的結果。 – 2014-10-30 17:32:49