2015-05-28 23 views
-1

我有一个用户表,其中一个属性的习惯有像购物,运动等valus现在,当我登录到我的应用程序,我从FORM标签获取用户名,这是在javascript中用于进一步的使用。我需要一个查询来显示习惯=购物的所有用户表格内容,但不应该显示当前登录用户的详细信息。我用于此的查询是,
select * from用户where习惯='shopping',除了select * from用户名where'= niranjan';在SQL查询中使用EXCEPT标识符时出错

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

+1

您使用的是什么RDBMS?并不是所有的人都支持'EXCEPT',但是如果你发布'user'表的结构,我们可以协助纠正没有它的查询(可能就像'SELECT * FROM user WHERE habit ='shopping'AND username <> 'niranjan'') –

+0

非常感谢@micheal berkowski !!!它实际上工作。我使用了帮助我解决问题的'<>'符号 –

回答

0
select * from user where habits='shopping' and username!='niranjan'; 
0

除此之外不需要。只需添加一个条件,你在那里caluse:

And username <> 'niranjan' 
0

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

在此期间,您可以使用方括号的查询:

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

然而,它是坏的形式使用表和列名的保留字。

+0

虽然我同意使用保留字是一种坏习惯,但为什么要保留除了可以明确替换为添加条件到第一个选择语句之外的东西呢?我在这里错过了什么,或者你呢? –

+0

@ZoharPeled。 。 。我想你是对的,因为'select *'。在某些情况下,'select'可能有一个列的子集,并且这两个版本不相同。 –