3

例如,我的数据库中有这么多域名

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 个来自 yahoo,然后是 2 个来自 123musiq,然后是 2 个来自 sensongs。我怎样才能做到这一点?在 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
  

我使用以下代码
选择 x.url
  FROM(选择 t.url,
               案子
                 当@domain = SUBSTRING_INDEX(t.url, '/', 1) 那么@rownum := @rownum + 1
                 否则 @rownum := 1
               END AS 排名,
               @domain := SUBSTRING_INDEX(t.url, '/', 1)
          从 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) 反对 ('account');

它显示错误
查询: SELECT x.url FROM (SELECT t.url, CASE WHEN @domain = SUBSTRING_INDEX(t.url, '/', 1) THEN @row...
错误代码:1054
'where 子句'中的未知列'teet'

但是 Teet 是我的 URL2 表中的一列

4

1 回答 1

2

MySQL 没有分析功能,这是您获取每个分组的两个条目所需要的。另一个痛苦是“www”。复杂的定位第二个时期...

采用:

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
于 2010-08-20T04:14:21.103 回答