我这里有两张表
posts tags
[ id title ] [ pid tag ]
[ 1 X ] [ 1 php ]
[ 2 Y ] [ 1 pdo ]
[ 3 Z ] [ 2 php ]
[ 2 ajax ]
[ 3 pdo ]
我在这两个表上都应用了这个查询
$query = "
SELECT a.title FROM posts a
INNER JOIN tags b ON a.id = b.pid
WHERE b.tag IN ($tags)
";
现在,如果
$tags = [php, pdo];
我希望获得$tags
匹配值更高的行,因此订单为X->Y->Z
如果
$tags = [php, pdo, ajax]
我希望得到X->Y->Z
,但在两个查询中,订单根本不是这样的,它更像是按名称或标签字母顺序排序,我怎么能按顺序排序匹配最高的行,如果可能,只有所有匹配值的唯一行。
答案 0 :(得分:0)
如果它只是关于标签的出现,您可以按计数进行分组和排序。
像(未经测试的)
DESC
(订购ASC
或driver = webdriver.Safari()
,具体取决于你最顶层的东西)
但是,这只会考虑"真实"比赛,任何错字,如" pgp"而不是" php"会破坏搜索结果的质量。