0

私のデータベースには、重複している場合に増加する次の行があります。

foo
foo-1
foo-2
foo-3
f
f-1
f-2
f-3
バー
バー-1

データベースにクエリを実行して、最後の f-#を取得したい。以下の LIKE 演算子を使用してみました。

SELECT * FROM links WHERE slug LIKE '$slug%' ORDER BY timestamp DESC LIMIT 1";

私の問題
$slug == f の場合、f-3 ではなく foo-3 が返されます。% ワイルドカードを使用するより良い方法はありますか?

4

1 に答える 1

0
SELECT *
FROM links
WHERE slug LIKE '$slug-%' OR slug = '$slug'
ORDER BY timestamp DESC
LIMIT 1

をやりたくない場合の代替手段は、一致ORを使用することです。REGEXPただし、そうすると、クエリにインデックスを使用できなくなる可能性があります。

于 2012-07-12T03:00:17.870 に答える