php - MYSQl 按计数最佳标签匹配查询顺序
问题描述
我正在尝试对 MYSQL 查询进行排序,并希望显示具有最佳标签匹配的结果,首先显示。尝试了 6 个多小时。为什么 ORDER BY 不起作用?
当我手动为标签“293,2376,231,8,2088,9,171,4,18,7,1,40,657,23,2339,5,96,2904,702,1936”添加报价时,它确实是第一位的。 . 但是第二名的引用只有 4 个标签匹配,第 10 名得到 7 个匹配。
数据库
物品标签
itemid,
tagid
引号
id,
bg_image,
author,
active
报价单
id,
quote
<?php
$topictagid = "293,2376,231,8,2088,9,171,4,18,7,1,40,657,23,2339,5,96,2904,702,1936";
$sQuery = "SELECT quotes.id, bg_image, author, tagid, active, itemid, quote
FROM itemtag
LEFT JOIN quotes ON quotes.id = itemtag.itemid
LEFT JOIN quotes_en ON itemtag.itemid = quotes_en.id
WHERE tagid IN (".$topictagid.")
AND quotes.active = 1
GROUP BY itemid
having count(tagid) > 2
ORDER BY count(tagid) DESC
LIMIT 50";
?>
解决方案
您的ORDER BY是否适用于此?
$topictagid = "5,10,16,17";
$sQuery = "SELECT quotes.id, bg_image, author, tagid, active, itemid, quote, count(tagid) as countag
FROM itemtag
LEFT JOIN quotes ON quotes.id = itemtag.itemid
LEFT JOIN quotes_".$language." ON itemtag.itemid = quotes_".$language.".id
WHERE tagid IN (".$topictagid.")
AND quotes.active = 1
GROUP BY itemid
having count(tagid) > 2
ORDER BY countag DESC ".$sortby."
LIMIT 50";
推荐阅读
- postgresql - 如何为 JSONB 列构建 JPA 谓词?
- javascript - Nodejs运行js报错:不能在模块外使用import语句
- git - 恢复一个月前的恢复
- php - Laravel 在调用 aritsan 命令 Artisan::call('cache:clear') 时出现错误“尝试访问 int 类型值的数组偏移量”;
- javascript - 在 javascript/nodejs 中深度比较两个对象的最快方法是什么
- jsf - 当我们已经知道该组件的客户端 ID 时,从 Java 类呈现 JSF 组件
- python-3.x - Python Geopandas 无法读取、误读 750MB zip ESRI gdb 文件但不是 200MB zip ESRI gdb 文件
- c++ - 为什么在visual studio x64(MASM)上gs段寄存器的地址设置为0x0000000000000000?
- curl - 如何在 IBM Cloud Watson Visual Recognition 中使用 api 自定义对象检测?阈值设置不正确?
- c# - Net Core 中的 TypeLite - 不添加 tt 东西