php - SELECT 行 LIKE 标记和带有偏移量的 LIMIT

标签 php mysql

我正在尝试在我网站上的文章上实现标签系统。我的数据库中的每个文章行都有一个 tags 列,可以保存像 php html css jquery 这样的字符串。

当查询数据库时,我只想一次只返回 10 个结果。这是我目前正在使用的:

$sql = "SELECT * FROM articles WHERE tags LIKE '%" . $tag . "%' LIMIT " . $start . ", 10";

我发现这并不准确。当限制结果时,他将抓取 $start 行后的 10 条记录,然后找到包含 $tag 的记录。

我需要他做的是首先找到标签中包含 $tag 的所有行,然后然后限制结果。

使用两个查询来完成此操作似乎非常简单,但这是否是最有效的方法?

获取从偏移量 $start 开始包含 $tag 的 10 行的最佳方法是什么?

最佳答案

一种选择是使用子查询,以便您从已过滤的结果中选择一个限制:

$sql = "SELECT * FROM ( SELECT * FROM articles WHERE tags LIKE '%" . $tag . "%' ) LIMIT " . $start . ", 10";

关于php - SELECT 行 LIKE 标记和带有偏移量的 LIMIT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24558919/

相关文章:

php - 使用 Doctrine 设置 "time"或 DateInterval

php - 来自文本文件的数组使用 php 返回大量空白空间

mysql - 为什么 RAND 有时会在 MySQL 调用中产生多个结果?

javascript - 使用 AJAX 和 PHP 检查(下载)文件是否存在

javascript - 将 JSON 文件传递​​到 php 服务器,然后将其中的数据保存到 Mysql DB

php - 将多行的 php 字符串传递给 javascript 函数/变量

mysql - SQL 查询需要很长时间才能运行

php - javascript 和 PHP 中的重音

php - 拍摄特定数据快照的最佳方法

php - format mysql格式化日期