3

たとえば、DBに非常に多くのドメイン名があります

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(SELECT t.url、
               場合
                 WHEN @domain = SUBSTRING_INDEX(t.url、'/'、1)THEN @rownum:= @rownum + 1
                 ELSE @rownum:= 1
               ランクとして終了、
               @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');

エラーが表示されます
クエリ: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 には、グループ化ごとに 2 つのエントリを取得するために必要な分析関数がありません。他の痛みは「www.」です。第 2 ピリオドの特定が複雑になります...

使用する:

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 に答える