0

在我的数据库中,我有以下行,如果它是重复的,它们会增加:

foo
foo-1
foo-2
foo-3
f
f-1
f-2
f-3
bar
bar-1

我想查询数据库并获取最后一个 f-#。我试过使用下面的 LIKE 运算符:

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

我的问题
如果 $slug == f 它返回 foo-3 而不是 f-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 回答