2014-05-21 71 views
0

我到處搜索了這個地方,但找不到任何解決方案,我需要在下面的sql語句中首先列出一個特定的城市,如'紐約',我試圖放置 ORDER BY CASE City.name_en WHEN'紐約'THEN 1 ELSE 2 END,City.name_en 在內部的sql語句但沒有工作,有沒有解決這個問題的任何解決方法?首先列出具體的值

SELECT * FROM (
SELECT RTRIM(Organization.name_en) as '@name','flag.png' AS '@flag', 
    RTRIM(Country.name_en) as 'country',RTRIM(city.name_en) as 'city',Organization.id as 'OrganizationID', 
    ROW_NUMBER() OVER (ORDER BY sequence_num) AS RowNum 
FROM Organization 
LEFT JOIN City ON City.id = city_id 
LEFT JOIN Country ON country.id = Organization.country_id 
LEFT JOIN Industry ON Industry.id = Industry_id 
WHERE 
(industry_id [email protected]_id OR Coalesce(@industry_id,'') = '') 
AND (Organization.name_en LIKE '%' + @OrganizationName + '%' OR Coalesce(@OrganizationName,'') = '') 
) AS SOD 

WHERE SOD.RowNum BETWEEN ((@PageNumber-1)*@RowsPerPage)+1 
AND @RowsPerPage*(@PageNumber) 

FOR XML PATH('organization'), ROOT('organizations') 

回答

0

其實我是這樣解決的:

ROW_NUMBER() OVER (ORDER BY CASE city.name_en 
      WHEN @cityName THEN 1 
      ELSE 2 END ,city.name_en) AS RowNum 
0

使用ORDER BY FIELD
例如: -

ORDER BY FIELD(City.name_en, 'New York', 'CA') 

它會給你預期的結果。

+0

這是一個不是MySql的SQL Server問題! – user2638062

+0

檢查了這一點 - http://www.youdidwhatwithtsql.com/ordering-by-column-value-in-sql-server-mysql/384/ – unknown

+0

我已經試過這個,但沒有得到預期的結果,我已經提到這個在我的問題 – user2638062

0

使用聯盟

例如

選擇COUNTRY_CODE,從國家COUNTRY_NAME其中COUNTRY_NAME = '紐約'

UNION ALL

選擇COUNTRY_CODE,從國家COUNTRY_NAME其中COUNTRY_NAME!=「新約克' order by country_name

+0

但那將如何處理該查詢? – user2638062

+0

在查詢中,您可以看到第一個是特定類型的.i.e'New York',而所有沒有Union的工會。將其插入臨時表中,甚至可以使用自動生成的號碼設置主鍵。你「通過ID asc從tempTable命令中選擇*」。它將按照你想要的順序。我希望這會有所幫助 – Nathanael