php - 获取所有与另一个表不匹配的行

标签 php mysql sql-like concatenation

我有一个棘手的问题。我有一个数字表:

  • 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, '%') 但它不起作用。有什么想法吗?

最佳答案

你可以试试这个

SELECT * FROM table2 WHERE '".$numbers."' NOT LIKE 'prefix%'

关于php - 获取所有与另一个表不匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14182072/

相关文章:

mysql - 从 rails 中的数据库中获取数据

PHP cURL 与部分传输

PHP Json 编码数组

PHP - Simpletest - 如何测试 "included"类

MySQL:如何检查 varbinary 类型中的特定值?

sql - 像命令不工作 Oracle SQL

mysql喜欢匹配字符串上的完整单词或单词开头

php - 无需刷新页面即可将下拉菜单中的数据提交到mysql

php - 使用 PHP 插入 MySQL 数据库时排除空记录

mysql - 如何在sql中选择regexp匹配的单词?