【问题标题】:error while using the EXCEPT identifier in sql query在 sql 查询中使用 EXCEPT 标识符时出错
【发布时间】:2015-05-28 20:00:36
【问题描述】:

我有一个用户表,其中一个属性为具有购物、体育等值的习惯。现在,当我登录到我的应用程序时,我从 FORM 标记中获取用户名,并在 javascript 中使用以供进一步使用。我需要一个查询来显示所有用户表内容,其中习惯=购物,但它不应该显示当前登录用户的详细信息。我用于此的查询是,
select * from user wherehabits='shopping' except select * from user where username='niranjan';

但是这一行正在生成一个错误,指出 EXCEPT 标识符此时不是有效的输入。
请更正我的错误或为我的问题提供替代代码。

【问题讨论】:

  • 您使用什么 RDBMS?并非所有人都支持EXCEPT,但如果您发布user 表的结构,我们可以协助更正没有它的查询(可能就像SELECT * FROM user WHERE habits='shopping' AND username <> 'niranjan' 一样简单)
  • 非常感谢@micheal berkowski !!!它确实有效。我使用了帮助我解决问题的“”符号

标签: sql forms except


【解决方案1】:
select * from user where habits='shopping' and username!='niranjan'; 

【讨论】:

    【解决方案2】:

    除了这里不需要。只需在你的 where caluse 中添加一个条件:

    And username <> 'niranjan'
    

    【讨论】:

      【解决方案3】:

      问题可能是user 是 SQL Server 的reserved word。我建议您将表重命名为 users 以解决此问题。

      同时,您可以使用方括号进行查询:

      select * from [user] where habits = 'shopping'
      except
      select * from [user] where username = 'niranjan';
      

      但是,在表名和列名中使用保留字是一种不好的形式。

      【讨论】:

      • 虽然我同意使用保留字是一个坏习惯,但为什么要保留 except 可以清楚地替换为在第一个 select 语句中添加条件?是我遗漏了什么,还是你?
      • @ZoharPeled 。 . .我认为你是对的,因为select *。在某些情况下,select 可能有一个列的子集,而这两个版本并不相同。
      猜你喜欢
      • 2020-11-16
      • 2011-08-18
      • 2013-04-12
      • 1970-01-01
      • 2019-07-02
      • 2020-05-16
      • 1970-01-01
      • 2015-03-29
      • 1970-01-01
      相关资源
      最近更新 更多