【问题标题】:MySQL where NOT IN name array?MySQL where NOT IN 名称数组?
【发布时间】:2012-08-27 03:45:32
【问题描述】:

我想排除这些具有以下名称的专辑:

$ban_album_names = array('Wall', 'Profile', 'Cover', 'Instagram');

如何正确书写,

SELECT * FROM albums WHERE name NOT IN ???

如何让它在数组中查找,如果名称匹配它应该!= 行

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    试试这个:

    $sql = "SELECT *
        FROM albums
        WHERE name NOT IN ( '" . implode( "', '" , $ban_album_names ) . "' )";
    

    【讨论】:

    • 对于给定的名称列表,字符串中没有任何嵌入的引号;如果有,您需要创建$banned 列表调用适当的引用函数来防止SQL Injection
    • 这是一个糟糕的答案,会导致一堆不必要的查询。往下看。
    • 如果你有一个 ID 的数组,整数呢?
    • 此参数顺序在撰写本文时可能是合适的。但是,现在遇到它的人请注意,记录的顺序首先是“胶水”,然后是数组。从技术上讲,它们仍然可以工作,但这不是记录的顺序。
    【解决方案2】:

    MySQL 代码是

    SELECT * FROM albums WHERE name NOT IN ('Wall', 'Profile', 'Cover', 'Instagram')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-08
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 2011-09-30
      • 2014-03-03
      • 2021-08-19
      相关资源
      最近更新 更多