提问人:Liam Morton 提问时间:7/8/2023 最后编辑:Liam Morton 更新时间:7/8/2023 访问量:48
通过匹配两个或多个表来对表进行排序
Order table results from matching two or more tables
问:
我有一个语句,它从两个表中获取数据,然后像这样:SELECT
MATCH
SELECT a.*, b.*
FROM a INNER JOIN b ON a.id=b.id
WHERE MATCH(a.column) AGAINST( 'somthing' IN BOLLEAN MODE)
OR MATCH(b.column) AGAINST( 'somthing' IN BOLLEAN MODE)
ORDER BY
我想按原样对结果进行排序a AND b BOTH match on the same row
a OR b match in a row (order doesn't mater for this)
任何帮助都会不胜感激!
答:
1赞
nbk
7/8/2023
#1
由于您的全文搜索不在选择中,因此您需要重复它们。
剩下的就是一个决定哪个先来的案例
SELECT a.*, b.*
FROM a INNER JOIN b ON a.id=b.id
WHERE MATCH(a.column) AGAINST( 'somthing' IN BOoLEAN MODE)
OR MATCH(b.column) AGAINST( 'somthing' IN BOOLEAN MODE)
ORDER BY
CASe WHEN MATCH(a.column) AGAINST( 'somthing' IN BOoLEAN MODE) > 0 AND MATCH(b.column) AGAINST( 'somthing' IN BOOLEAN MODE) > 0 THEN 1
WHEN MATCH(a.column) AGAINST( 'somthing' IN BOoLEAN MODE) > 0 OR MATCH(b.column) AGAINST( 'somthing' IN BOOLEAN MODE) > 0 THEN 2 END
评论
0赞
Liam Morton
7/8/2023
这有效,谢谢!
0赞
shawnt00
7/9/2023
真的没有理由重复,因为它已经通过了过滤器:where
CASE WHEN MATCH(a.column) AGAINST('something' IN BOOLEAN MODE) > 0 AND MATCH(b.column) AGAINST('something' IN BOOLEAN MODE) > 0 THEN 1 ELSE 2 END
0赞
nbk
7/9/2023
我们不知道所有的标准,所以可以考虑更多
评论