- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 PHP 脚本,可以从我们的 MySQL 数据库创建 RSS 提要。数据库中的记录涵盖三年。
我一直在改变 MySQL 查询,并在此处搜索后修复问题那么至少现在有结果被返回,但它只带回一个无论我为查询中的记录数设置限制如何,都会得到几个月的结果。
这是查询:
$mysqli->query("
SELECT *
FROM news
WHERE (`title` LIKE '%red%'
OR `title` LIKE '%green%'
OR `title` LIKE '%blue%'
OR `title` LIKE '%yellow%'
OR `title` LIKE '%black%')
AND published = 1
AND category_id != 9
AND category_id != 10
ORDER
BY id DESC LIMIT $news_number")
$news_number 设置为 200,但我尝试使用更高的数字,结果数量没有改变。
举个例子,如果我运行上面的查询,我会得到许多结果,但是低于限制,并且会在 11 月初停止。
但是,如果我仅使用一个术语(即蓝色)进行“LIKE”搜索,那么它会返回一年多以前的更多结果。
我的问题是 MySQL 查询看起来正确吗 - 已经尝试了很多方法但是尽管花费了相当多的时间,但似乎还是无法做到正确。
提前致谢
添加:
为了澄清,如果我运行此查询作为示例,我会返回 200 个结果:
$mysqli->query("SELECT * FROM news WHERE `title` LIKE '%red%' AND
published='1' AND category_id !='9' AND category_id !='10'
ORDER BY id DESC LIMIT $news_number")
但是如果我在 OR 部分中包含红色来运行此查询,那么我会得到 35 个结果:
$mysqli->query("SELECT * FROM news WHERE (`title` LIKE '%red%' OR `title` LIKE '%green%' OR
`title` LIKE '%blue%' OR `title` LIKE '%yellow%' OR `title` LIKE '%black%') AND
published='1' AND category_id !='9' AND category_id !='10'
ORDER BY id DESC LIMIT $news_number")
在第二个中,我预计会得到超过 200 个结果,除非代码错误??
感谢那些提出建议的人 - 已更新结果如下:
为了按照 Flynorc 提到的方式进行测试,我更改了查询,使其内容如下:
("SELECT * FROM news WHERE title REGEXP 'red|green|blue|yellow|black' AND published='1' AND category_id !='9' AND category_id !='10' ORDER BY id DESC LIMIT $news_number")
结果是它返回的结果数量与我的相同(上面原来的第一个),并且返回的结果在 11 月初就停止了。
所以我删除了 LIMIT $news_number 并且结果数量没有改变。
然后我再次将查询更改为如下所示:
("SELECT * FROM news WHERE title REGEXP 'red|green' AND published='1' AND category_id !='9' AND category_id !='10' ORDER BY id DESC")
它带回了更多结果,记录于今年 3 月停止 - 仍然不是整个数据库,因为它有可追溯到三年前的记录。
为了澄清标题字段 - 这包含具有我试图匹配的完整单词的标题,并且有很多应该匹配的标题。我的意思是我并不是真的在寻找像红色这样的词,我只是想将它与像红色这样的词相匹配
如果我的解释不够精彩,我深表歉意 - 这让我真的很困惑。在这个阶段,我能看到获得更多结果的唯一方法是运行两个脚本,并将查询分解为更短的查询。
最佳答案
您的查询中的问题是弯括号,您还需要在其他查询中为 LIKE 条件添加它们。
下面的两个查询看起来很相似,但仔细一看,我为其中一个添加了像您一样的大括号 (),因此它们会产生不同的输出。第二个是正确的。
所以我们在使用LIKE条件时需要使用大括号来将它们与sql查询中的其他条件隔离。
SELECT * FROM test WHERE str LIKE '%red%' OR str LIKE '%green%' OR str LIKE '%blue%' OR str LIKE '%yellow%' OR str LIKE '%black%' AND id=1;
SELECT * FROM test WHERE (str LIKE '%red%' OR str LIKE '%green%' OR str LIKE '%blue%' OR str LIKE '%yellow%' OR str LIKE '%black%') AND id=1;
sql fiddle ::http://sqlfiddle.com/#!9/d262b8/2
希望这有帮助。
关于php - MySQL查询具有多个条件但结果有限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48054375/
我有一个关于复杂性的简单问题。我在 Java 中有这段代码: pairs是 HashMap包含 Integer作为键,它的频率为 Collection作为一个值。所以: pairs = new Has
对于我的应用程序,我需要在 Coq 中使用和推理有限映射。谷歌搜索我发现 FMapAVL 似乎非常适合我的需求。问题是文档很少,我还没有弄清楚我应该如何使用它。 作为一个简单的例子,考虑以下使用对列表
我有一个主表tblAssetMaster A和一个移动表tblMovement M。 我想提取所有 Assets 及其当前位置,因此需要获取每个 Assets 的最新移动条目。 字段 A: Asset
我想让我的网站内容居中,但仅限于网页的特定宽度。所以当它超过 500px 时,我希望内容被修复,无法进一步拉伸(stretch)。无论如何都要这样做,还是我最好把所有东西都修好?希望有意义的是添加一些
我正在尝试批量删除 Backbone 模型的集合,如下所示...... collection.each(function(model, i){ model.destroy(); }); 我发现当每
我想要一个软件环境,在其中我可以在具有特定资源的硬件上测试我的软件的速度。例如,当我的主机硬件是具有 12GB RAM 的 3GHz 四核 amd64 时,该程序在具有 24 Mb RAM 的 800
在 Eclipse 中,我得到了 BigInteger.valueOf(2).pow(31093) 的值,但没有得到 BigInteger.valueOf(2).pow(31094) 的值(它是空的)
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
我想将 2 个表从本地 sql server 2000 上传到托管的 mysql。第一个表有 17 列和 680 行,其他 10 列和 8071 行。 我首先使用 xampp mysql 尝试离线,它
我在 S3 中自动生成并保存了静态 html 文件。有时文件大小达到 2mb。是否可以使用javascript来获取html文件的一部分,显示它,当用户到达页面底部时,获取下一部分等等? 最佳答案 X
我是一名优秀的程序员,十分优秀!