2014-02-10 128 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' 
相關問題