【问题标题】:MSQL How can I use a many statement in NOT INSQL 如何在 NOT IN 中使用 many 语句
【发布时间】:2023-03-15 11:45:01
【问题描述】:

我尝试执行这个查询:

SELECT ISBN FROM table2 WHERE 
NOT IN ISBN=('8426429807','840149768X')
group by ISBN 
ORDER BY AVG(`Book-Rating`) DESC LIMIT 10

但我得到这个形状的错误

1064 - 您的 SQL 语法有错误;检查手册 对应于您的 MariaDB 服务器版本,以便使用正确的语法 靠近'IN ISBN=('8426429807','840149768X')

Not In 中如何使用多个 isbn

【问题讨论】:

  • 其中 X 不在 Y 中!
  • 不是问题的原因,但您应该避免在列名中使用破折号。
  • 在表/列标识符中包含减号 ('-') 字符几乎是 sql 中可能拥有的最愚蠢的想法。您已收到警告。
  • 请参阅:How to accept an answer for closure。谢谢:)

标签: mysql notin


【解决方案1】:

Not In() 语法是:

expr NOT IN (value,...)

基本上,列/表达式应该出现在Not In 之前,并且您不要使用= 运算符。应该是:

SELECT ISBN
FROM table2
WHERE ISBN NOT IN ('8426429807',
                   '840149768X')
GROUP BY ISBN
ORDER BY AVG(`Book-Rating`) DESC
LIMIT 10

编写相同查询的另一种方法是使用NOT (expr IN (value, ...))

SELECT ISBN
FROM table2
WHERE NOT (ISBN IN ('8426429807',
                    '840149768X'))
GROUP BY ISBN
ORDER BY AVG(`Book-Rating`) DESC
LIMIT 10

【讨论】:

  • 图书评级?接下来,您将用书 a 除以它的评分!
  • @Strawberry 已修复。
【解决方案2】:

你应该使用where column_name NOT IN ( col_value1, col_value2)

select ISBN from table2
where ISBN NOT IN ('8426429807','840149768X')
group by ISBN 
ORDER BY AVG(`Book-Rating`) DESC LIMIT 10

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多