我有一个棘手的问题。我有一张数字表:
另一张带有前缀的表:
我想找到与最长前缀匹配的所有数字。我成功完成了这段代码:
$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(前缀,'%'),但它不起作用。有什么想法吗?
答案 0 :(得分:1)
你可以试试这个
SELECT * FROM table2 WHERE '".$numbers."' NOT LIKE 'prefix%'
答案 1 :(得分:1)
单查询解决方案将如下所示。试试吧
SELECT * FROM table1 LEFT JOIN table2 ON table1.numbers LIKE CONCAT(table2.prefix,'%') WHERE table2.prefix IS NULL