2

「boat」という単語を入力したので、「boat」で始まり「boat」を含むレコードが必要ですが、「boat」で始まるレコードが最初に表示される必要があります

フォローしてみた

Select   AsiccCodeId,AsiccDescription             
FROM     AsiccCodeMaster  c             
WHERE    c.AsiccDescription like 'boat%' or c.AsiccDescription like '%boat%'

select a.* from
(

 Select   AsiccCodeId,AsiccDescription             
 FROM     AsiccCodeMaster  c             
 WHERE c.IsActive = 1  and (GoodFor = 'M' or GoodFor = 'B')
 and c.AsiccDescription like 'Unmilled%'



 UNION

 Select   AsiccCodeId,AsiccDescription             
 FROM     AsiccCodeMaster  c             
 WHERE c.IsActive = 1  and (GoodFor = 'M' or GoodFor = 'B')
 and c.AsiccDescription like '%Unmilled%'



 )a

しかし、それは私に与えます

4137    Combustion Boats 
6360    Boat, Fibre
6361    Boat, Rubber - Motorized
6362    Boat, Wooden Canal Boats
6363    Boat, Wooden With Engine
6370    Wooden Boats Body Building
6374    Boat, Rowing / Sports
6375    Boat, Rubber - Nonmotorized
6376    Boat, Wooden Without Engine-Others
6379    Parts Of Ships, Boats Etc., N.E.C
6391    Ships, Boats & Other Vessels, N.E.C
6394    Ships, Boats & Other Vessels, N.E.C

最初に「boat」で始まるレコード、次に「boat」を含むレコードが必要です

4

2 に答える 2

10

Order By 句で CASE ステートメントを使用する

SELECT   AsiccCodeId,AsiccDescription             
FROM     AsiccCodeMaster  c             
WHERE    c.AsiccDescription like '%boat%'
ORDER BY CASE WHEN c.AsiccDescription like 'boat%' THEN 0 ELSE 1 END, c.AsiccDescription

「boat」で始まるタイトルを最初に表示したいので、CASE ステートメントはそれらを最初に優先します。各レコードを調べ、説明が「boat」で始まる場合は並べ替え値 0 を割り当て、それ以外の場合は並べ替え値 1 を割り当てます。ORDER BY はデフォルトで昇順で並べ替えを行うため、すべての 0 ( 'boat' で始まるもの) すべての 1 の前 (残りのレコード)

于 2013-05-15T14:29:31.520 に答える
3

結果に順序を付ける必要があります。

SELECT a.* 
FROM
(
    SELECT 
       AsiccCodeId, AsiccDescription, Sequence = 1
    FROM AsiccCodeMaster  c             
    WHERE c.IsActive = 1 AND (GoodFor = 'M' or GoodFor = 'B')
      AND c.AsiccDescription LIKE 'Boat%'    

    UNION

    SELECT 
       AsiccCodeId, AsiccDescription, Sequence = 2
    FROM AsiccCodeMaster  c             
    WHERE c.IsActive = 1 AND (GoodFor = 'M' or GoodFor = 'B')
      AND c.AsiccDescription LIKE '%Boat%'    
) a
ORDER BY a.Sequence
于 2013-05-15T14:28:32.823 に答える