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 (prefix, '%')但它不起作用。任何想法?

4

2 回答 2

1

你可以试试这个

SELECT * FROM table2 WHERE '".$numbers."' NOT LIKE 'prefix%'
于 2013-01-06T12:34:56.103 回答
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 回答