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 に基づいてすべての個別のレコードを取得することです。これにより、2 つの行が得られます。トリッキーな部分は、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

周りを検索した後、私はこの解決策を見つけました:

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

ちょっと醜いように見えますが、それは私をさらに前進させます。

于 2012-06-26T10:31:27.080 に答える
0

GROUP BYSQL クエリで句を使用する必要があります。

次のようなクエリが機能するはずです。

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 に答える