Mysql 根据相关性查找数据,然后从diff域中获取2个结果
例如,我的数据库中有很多域名Mysql 根据相关性查找数据,然后从diff域中获取2个结果,mysql,sql,greatest-n-per-group,mysql-error-1054,Mysql,Sql,Greatest N Per Group,Mysql Error 1054,例如,我的数据库中有很多域名 www.yahoo.com/duniya.html www.yahoo.com/hero.html www.123musiq.com/ www.123musiq.com/home.html www.123musiq.com/horo.html www.123musiq.com/yuva.html www.sensongs.com/ www.sensongs.com/hindi.html www.sensongs.com/yuva.html www.sensongs.
www.yahoo.com/duniya.html
www.yahoo.com/hero.html
www.123musiq.com/
www.123musiq.com/home.html
www.123musiq.com/horo.html
www.123musiq.com/yuva.html
www.sensongs.com/
www.sensongs.com/hindi.html
www.sensongs.com/yuva.html
www.sensongs.com/duniya.html
www.sensongs.pk/duniya1.html
我需要对它们进行排序,首先是雅虎的2个,然后是123musiq的2个,然后是sensongs的2个。
我该怎么做?mysql还是PHP?
我知道要获得域名,我需要知道如何从每个域排序2?
我使用的是匹配方法
期望输出
www.yahoo.com/duniya.html
www.yahoo.com/hero.html
www.123musiq.com/
www.123musiq.com/home.html
www.sensongs.com/
www.sensongs.com/hindi.html
我使用以下代码
SELECT x.url
FROM (SELECT t.url,
CASE
WHEN @domain = SUBSTRING_INDEX(t.url, '/', 1) THEN @rownum := @rownum + 1
ELSE @rownum := 1
END AS rank,
@domain := SUBSTRING_INDEX(t.url, '/', 1)
FROM URL2 t
JOIN (SELECT @rownum := 0, @domain := '') r
ORDER BY SUBSTRING_INDEX(t.url, '/', 1)) X
WHERE x.rank <= 2 AND MATCH(teet,url,html) AGAINST ('account');
它显示错误
但是Teet是我的URL2表中的一列,MySQL没有分析函数,这是每个分组获得两个条目所需要的。另一个痛苦是www.complexies定位第二阶段 使用:
@OMG:我们可以通过找到域名,wht是x.domainname,x.rank,t。domainname@Alex马修:谢谢,更新了。x是派生表/内联视图的表别名。它的使用方式与派生表/内联视图中的t别名相同…@OMG:我的表名是url2,保存url的冒号是url,你能重写SQL吗?@Alex Mathew:我不明白你所说的匹配是什么意思,它显示错误-什么错误?您能否更新该问题以显示您如何尝试使用有关匹配的查询?@Alex Mathew:派生表仅包含两列url和rank。假设它们存在于URL2表中,您需要在派生表中公开它们,以便它们对您列出的FTS MATCH/ANTH子句可见-请参阅更新。 Query : SELECT x.url FROM (SELECT t.url, CASE WHEN @domain = SUBSTRING_INDEX(t.url, '/', 1) THEN @row... Error Code : 1054 Unknown column 'teet' in 'where clause'
SELECT x.url
FROM (SELECT t.url,
t.teet,
t.html,
CASE
WHEN @domain = SUBSTRING_INDEX(t.url, '/', 1) THEN @rownum := @rownum + 1
ELSE @rownum := 1
END AS rank,
@domain := SUBSTRING_INDEX(t.url, '/', 1)
FROM URL2 t
JOIN (SELECT @rownum := 0, @domain := '') r
ORDER BY SUBSTRING_INDEX(t.url, '/', 1)) x
WHERE x.rank <= 2