0

我在试图弄清楚如何完成以下工作时遇到了一些麻烦。

我的桌子:

id:  schema:  updated_date

1    sometext  2012-01-01
1    sometext  2012-02-02
1    sometext  2011-03-03
1    sometext  2010-04-04
2    sometext  2012-04-05
2    sometext  2012-06-07
2    sometext  2011-04-01
2    sometext  2010-09-09

现在,我想要完成的是从表中选择所有内容,并根据 id 获取所有不同的记录,这应该给我两行,棘手的部分是根据 updated_date 获取结果,我想要最新的。所以基于上表,我希望能够提取以下2条记录:

1    sometext  2012-02-02
2    sometext  2012-06-07

任何人都可以帮助我如何制作这个我 MySQL,我正在使用 PHP PDO。

表结构:

CREATE TABLE IF NOT EXISTS `mail_schema` (
  `id` int(11) NOT NULL,
  `name` varchar(50) NOT NULL,
  `message` text NOT NULL,
  `updated_by` int(11) NOT NULL,
  `last_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

表数据:

INSERT INTO `mail_schema` (`id`, `name`, `message`, `updated_by`, `last_updated`) VALUES
(1, 'nummer et', '<p>\n med tekst</p>\n', 3, '2012-06-25 18:56:21'),
(1, 'nummer 2', '<p>\n  med tekst</p>\n', 3, '2012-06-25 18:56:46'),
(1, 'test', '<p>\n  test</p>\n', 3, '2012-06-25 18:57:38'),
(1, 'test igen', '<p>\n asd</p>\n', 3, '2012-06-25 18:58:28'),
(2, 'test 5', '<p>\n    asd</p>\n', 3, '2012-06-25 18:59:11'),
(3, 'test 6', '<p>\n    med id 3</p>\n', 3, '2012-06-25 18:59:37'),
(2, 'test 5', '<p>\n    asd version 2</p>\n', 3, '2012-06-25 19:00:46');
4

4 回答 4

1
SELECT * FROM `table` GROUP BY `id` ORDER BY updated_date DESC;

那没用?

于 2012-06-25T12:43:00.520 回答
0

您需要GROUP BY在 SQL 查询中使用该子句。

我相信这样的查询应该有效:

SELECT * FROM `table` GROUP BY `id`, `updated_date` DESC ORDER BY `id` ASC
                                                    ^
                                                    Might need to be ASC
于 2012-06-25T12:42:34.437 回答
0

嗯?

SELECT * FROM `table` GROUP BY `id` ORDER BY `date`
于 2012-06-25T12:42:57.667 回答
0

搜索了一圈后,我找到了这个解决方案:

SELECT * FROM (SELECT * FROM mail_schema ORDER BY last_updated DESC) AS x GROUP BY id

虽然它看起来有点丑陋,但它让我更进一步。

于 2012-06-26T10:31:27.080 回答