2

SQL Serverでこのようなクエリを作成するにはどうすればよいですか?

SELECT id, (id in(2,3,4) ) as idIs234 from Messageset 

次のような結果が欲しい

id idIs234 
-----------
1 false
2 true
3 true
4 true
5 false
6 false

このコードは機能しませんが、私が知らない代替手段があることを願っています。

4

5 に答える 5

3

クエリ:

SQLFIDDLEexample

SELECT 
id,
CASE WHEN id in(2,3,4) 
      THEN 'TRUE'
      ELSE 'FALSE'
  END AS ids
FROM Messageset 

結果:

| ID |   IDS |
--------------
|  1 | FALSE |
|  2 |  TRUE |
|  3 |  TRUE |
|  4 |  TRUE |
|  5 | FALSE |
|  6 | FALSE |
于 2012-11-27T11:55:57.857 に答える
2

CASE次のステートメントを使用できます。

select id,
  case when id in (2,3,4) then 'true' else 'false' end result
from Messageset

SQL FiddlewithDemoを参照してください

結果:

| ID | RESULT |
---------------
|  1 |  false |
|  2 |   true |
|  3 |   true |
|  4 |   true |
|  5 |  false |
|  6 |  false |
于 2012-11-27T11:56:06.467 に答える
1

仮定 - 2、3、4 はハードコードされたリストではなく、短いリストの単純な例です。

他のソリューションには、ハードコーディングされたチェックがあり2, 3 or 4ます。私は、あなたが短いリストを持っていると仮定してNULLいます..LEFT OUTER JOIN

-- Setup the subquery / sub table.
-- In this case, it's a variable table.
DECLARE @TempData TABLE (Id INTEGER PRIMARY KEY NOT NULL)
INSERT INTO @TempData VALUES (2)
INSERT INTO @TempData VALUES (3)
INSERT INTO @TempData VALUES (4)

-- Outer join the two tables. If there's no join, then the second table 
-- will be NULL.
SELECT a.Id AS Id, 
    CASE WHEN b.Id IS NULL THEN 'False' 
        ELSE 'True' END 
        AS Idls234
FROM [dbo].[Messageset] a
    LEFT OUTER JOIN @TempData b ON a.Id = b.Id

hvdのヘルプにより修正されました。

デモでSql Fiddleを見る

于 2012-11-27T11:51:46.897 に答える
1

使用しているデータベースサーバーについて言及していません。それを行う標準的な方法はありません。そのため、次のように を使用して、MySQL でそれを行う方法を説明しますIF function

SELECT id, IF(id IN ( 2, 3, 4 ) ,  'true',  'false' ) AS idIs234
FROM Messageset
于 2012-11-27T11:50:16.387 に答える
0

今いいよ

SELECT id, 
case when id in(2,3,4) then 'true'
else 'false'
end idIs234 from Messageset
于 2012-11-27T12:00:15.887 に答える