1

max(選択フィールド)と別の(特定のフィールド)で1つの行を選択する方法は?

以下は私のコード
です 1.まず max(select field) を知る
2.次に、行内のすべてのフィールドを選択します しかし、ステップ 2 では何も返されません。
そして、同じ結果のためのより短い構文はありますか??
ありがとう。

$gid = 1;

// get lid
$sth = $db->prepare("SELECT MAX(lid) as lid FROM t WHERE gid = :gid");
$sth->bindParam(':gid', $gid);
$sth->execute();
$arr = $sth->fetch(PDO::FETCH_ASSOC);
print $arr['lid'];

// nothing return??
$lid = $arr['lid'];
$sth = $db->prepare("SELECT * FROM t WHERE gid = :gid AND lid = :lid");
$sth->bindParam(':gid', $gid);
$sth->bindParam(':lid', $lid);
$row = $sth->fetch();
print_r($row);
4

1 に答える 1

0

次のクエリを使用して、ワンステップで実行できます。

$sql = "SELECT t.* 
        FROM t 
        INNER JOIN (
            SELECT MAX(lid) as lid 
            FROM t 
            WHERE gid = :gid
        ) AS x ON t.lid = x.lid";
$sth = $db->prepare($sql);
$sth->bindParam(':gid', $gid);
$sth->execute();
$arr = $sth->fetch(PDO::FETCH_ASSOC);
print_r($arr);
于 2013-07-20T13:09:07.527 に答える