私はほぼ100のフィールドを持つデータベースを持っています。 DB構造はMysql Tweak by
id |コメント|時間
私は唯一の5 最新レコードをフェッチする必要が
(私は時間DESCでORDERを使用してそれらのレコードを取得することができます)。しかし、それらを印刷している間、私はこれらの5つのレコードのうち最も古いものを最初に印刷し、最新のレコードが最後に印刷されるように逆に進める必要があります。
私はほぼ100のフィールドを持つデータベースを持っています。 DB構造はMysql Tweak by
id |コメント|時間
私は唯一の5 最新レコードをフェッチする必要が
(私は時間DESCでORDERを使用してそれらのレコードを取得することができます)。しかし、それらを印刷している間、私はこれらの5つのレコードのうち最も古いものを最初に印刷し、最新のレコードが最後に印刷されるように逆に進める必要があります。
行
の数の上限を昇順で結果セットをフェッチした後、あなたは(降順)逆の順序でそれらを印刷し、これを行うことができ、[OK]を
$data= array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
$records = array_reverse($data);
OR
これは、直接here
から取ら mysql_data_seekで行うことができる
for ($i = mysql_num_rows($resultset) – 1; $i >= 0; $i–) {
mysql_data_seek($resultset, $i);
$row = mysql_fetch_assoc($result);
echo $row['abc'] . ' ' . $row['xyz'] . "\n";
}
PHPのarray_reverse()
関数を結果リストに使用できます。あなたはマテリアライズド・ビューをとして、それを表現するために非常に良いだろう、この声明へのアクセスが多い場合
select * from (select * from table_name where 1=1 order by time desc
limit 5) as tbl order by tbl.time;
編集:
また、このようなものを使用することができます。 mysqlにはマテリアライズド・ビューはありませんが、それらをシミュレートすることは可能です(http://lists.mysql.com/mysql/207808)
マテリアライズド・ビューまたはシミュレート・マテリアライズド・ビューを使用すると、提案されたPHPアプローチよりも大幅に優れたパフォーマンスを発揮します。言及されたもののほとんどは、とにかく多くのメモリを消費します。
私はあなたが(未テスト)の線に沿って何かを行うことができると思います:
SELECT
*
FROM (
SELECT
id, comment, time
FROM
table
ORDER BY
time DESC
LIMIT 5
)
ORDER BY
time ASC
UPDATE
をどうやら、(error #1248) "派生テーブルは、独自の別名を持っていなければなりません"。他の答えはすでにこれを行っているので、私はバンドワゴンに飛び乗るでしょう。あなたが改訂(およびテスト)クエリご覧いただけます:ところで
SELECT
derived.*
FROM (
SELECT
id, comment, time
FROM
table
ORDER BY
time DESC
LIMIT 5
) AS derived
ORDER BY
derived.time ASC
を、これはsupported as of MySQL 4.1です。
SELECT s.* FROM (
SELECT id, comment, time FROM table1
ORDER BY time DESC
LIMIT 5) as s
ORDER BY s.time ASC