不想用 WHERE 條件,直接按順序取第 N 筆。
SELECT * FROM (
SELECT ROW_NUMBER() OVER (ORDER BY id DESC) AS rowid, name
FROM test
) t
WHERE t.rowid = 10; -- 取第 10 筆
ROW_NUMBER() OVER (ORDER BY ...) 為每列生成遞增序號。ORDER BY id DESC 定義「第 N 筆」的排序規則(可換成時間、名稱等)。_bstr_t sql = "SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY id DESC) AS rowid, name FROM test) t WHERE t.rowid = 10";
_RecordsetPtr rs = m_pConnection->Execute(sql, NULL, adCmdText);
if (!rs->adoEOF) {
_variant_t vName = rs->GetCollect("name");
// 使用 vName
}
SELECT TOP 1 name FROM (
SELECT TOP 10 name FROM test ORDER BY id DESC
) t ORDER BY id ASC; -- 取第 10 筆(相對低效)