1

トリッキーな質問があります。数字の表があります:

  • 37823782
  • 37823782
  • 37823782
  • 38478934
  • 90003922

そして接頭辞付きの別のテーブル:

  • 378
  • 3847
  • 384
  • 001

最長のプレフィックスに一致するすべての番号を検索したい。私はこのコードで成功しました:

    $result = mysql_query("SELECT numbers FROM table1 GROUP BY numbers") or die ("Query error code 1"); 
while($row = mysql_fetch_array($result))
{

    $numbers =$row["numbers"];

    $result2 = mysql_query("SELECT * FROM table2 WHERE '".$numbers."' LIKE CONCAT(prefix, '%') ORDER BY CHAR_LENGTH(prefix) DESC LIMIT 1");
    while($row2 = mysql_fetch_array($result2))
    {

        // That's it

    }       

}

今、私が単純に反対のものを作りたいもの。プレフィックスと一致しないすべての番号を検索したい。要するに、上記の例では、「90003922」を取得する必要があります。NOT LIKE CONCAT(プレフィックス、'%')を使用しようと思いましたが、機能していません。何か案が?

4

2 に答える 2

1

これを試すことができます

SELECT * FROM table2 WHERE '".$numbers."' NOT LIKE 'prefix%'
于 2013-01-06T12:34:56.103 に答える
1

1 つのクエリ ソリューションは次のようになります。それを試してみてください

SELECT * FROM table1 LEFT JOIN table2 ON table1.numbers LIKE CONCAT(table2.prefix,'%') WHERE table2.prefix IS NULL
于 2013-01-06T12:50:40.663 に答える