我想從以下數據庫的某些字段:
如何從MySQL表只檢索唯一條目
CREATE TABLE `messages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`message` text,
`date` datetime DEFAULT NULL,
`fra` int(11) DEFAULT NULL,
`til` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
弗拉=發件人ID;
直到=接收ID
這已例如這個值:
(1, 'This is a message for Obama', '2012-11-14 01:12:06', 1, 3),
(2, 'Hello John! How are you?', '2012-11-14 01:23:43', 3, 1),
(3, 'Hey Jack', '2012-11-14 01:28:11', 1, 2),
(4, 'How are you son?', '2012-11-14 01:28:15', 1, 2),
(5, 'everything allright for you?', '2012-11-14 01:28:23', 1, 2);
我想從數據庫中獲取的字段的方式是在如下:
我想要得到的唯一對話從一個用戶到另一個用戶。如果用戶1向用戶3發送了消息,並且用戶3對用戶1進行了回覆,那麼我只想選擇數據庫中的最後一個字段;或者,如果用戶1已派出3個消息給用戶2,那麼我想只得到3日消息,用戶2,從用戶1 因此,這意味着我應該只得到2行作爲結果
我曾嘗試:
SELECT DISTINCT * FROM messages WHERE fra='".$_SESSION['userid']."' OR til='".$_SESSION['userid']."' GROUP BY fra,til"
和
"SELECT DISTINCT(til) AS til FROM messages WHERE fra='".$_SESSION['userid']."' OR til='".$_SESSION['userid']."' ORDER BY id DESC"
,但我無法得到我想要的結果。
有人可以解釋我該怎麼做?
編輯:我只想建立線程用戶消息的,將顯示兩個用戶(這是查詢的範圍)
只在任何兩方之間獲得最新消息。 – marvin
是的。這很好。現在我需要獲取當前用戶和另一個用戶之間的消息。當前用戶由$ _SESSION ['userid']變量 – roshkattu
@roshkattu定義 - 只要刪除最後一個分號並在當前用戶爲'3'的情況下添加'和(fra = 3或者直到3)'。 – marvin