2014-02-10 93 views
0

试图运行此SQL查询,虽然它说它已成功执行,但不返回1结果。相反,它从数据库表返回所有行,因为它一般不会:SQL Server Management Studio中的此SQL查询有什么问题?

SELECT * FROM [Philadelphia].[dbo].[mmgusers_tbl] [WHERE UserName = 'testing' LIMIT 1]; 

如何更改执行时该给我的只有1行?

+0

请不要使用select *。显式指定输出,因为这会影响执行。 – ChrisBint

+0

'LIMIT 1'是MySql语法。在你的'SELECT'之后,MS SQL Server中的等价物是'TOP 1'。 'SELECT TOP 1 * FROM [Philadelphia]。[dbo]。[mmgusers_tbl] WHERE UserName ='testing'' – Shiva

+0

您不应该在这些可怕的括号之间放置*整个*'where'子句。 –

回答

2

LIMIT 1在MySQL中使用限制的记录。在SQL Server中,请尝试使用以下查询:

SELECT TOP 1 * FROM [Philadelphia].[dbo].[mmgusers_tbl] WHERE UserName = 'testing'; 
+0

出现此错误:'Msg 102,Level 15,State 1,Line 1''''''附近的语法不正确。'' –

+0

检查您的语法以确保您没有额外的方括号。这个语法适用于我。 – j03z

+0

非常感谢。它正在工作。 –

0

试试这个

SELECT Top 1 * FROM [Philadelphia].[dbo].[mmgusers_tbl] 
WHERE UserName = 'testing' 

(OR)

Select * FROM 
(
SELECT *,Row_Number() Over (Order By (Select Null)) AS RN FROM [Philadelphia].[dbo].[mmgusers_tbl] WHERE UserName = 'testing' 
) AS T 
Where RN = 1 
+0

方括号用于[数据库]/[类型]/[表名]。您无需将其包含在声明的其余部分。如果命名约定很糟糕,例如[Username.DatabaseX]。[dbo]。[Tablename] – Gauthier

+0

,我对第二个SQL查询感到困惑。 LIMIT不是SQL Server语法的一部分,该查询将引发错误。 –

+0

@AonyonyGrist请立即检查 –

0

这是你寻找

 

SELECT TOP 1 * FROM [Philadelphia].[dbo].[mmgusers_tbl] WHERE UserName = 'testing'; 
 
+2

把'['和']'放在WHERE子句的周围意味着这是表的别名,而不是实际的WHERE子句。 –

+0

'[WHERE UserName ='testing'];'? – bhs

0
SELECT * FROM [Philadelphia].[dbo].[mmgusers_tbl] WHERE UserName = 'testing' 

什么,只有1行相匹配的用户名“测试'

,如果你只是想要一个单行

SELECT TOP 1 * FROM [Philadelphia].[dbo].[mmgusers_tbl] WHERE UserName = 'testing' 
相关问题