Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我怎样才能从Messageset中选择id(在(2,3,4)中的id)作为idIs234_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 我怎样才能从Messageset中选择id(在(2,3,4)中的id)作为idIs234

Sql 我怎样才能从Messageset中选择id(在(2,3,4)中的id)作为idIs234,sql,sql-server,tsql,Sql,Sql Server,Tsql,如何在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 这个代码不起作用,但我希望有一个我不知道的替代方案 您没有提到您使用的是什么数据库服务器,也没有标准的方法,因此我将向您介绍如何使用MySQL,使用一个 SELECT id, IF(

如何在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

这个代码不起作用,但我希望有一个我不知道的替代方案

您没有提到您使用的是什么数据库服务器,也没有标准的方法,因此我将向您介绍如何使用MySQL,使用一个

SELECT id, IF(id IN ( 2, 3, 4 ) ,  'true',  'false' ) AS idIs234
FROM Messageset
假设-2,3,4不是硬编码列表。。但这只是一个简短列表的简单示例。 其他解决方案有一个硬编码检查
2、3或4
。我假设你有一个短名单。。因此,我要强调的是,如果执行
左外连接,如何检查
NULL

-- 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
通过来自的帮助修复

请参见查询:

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 |
| ID | RESULT |
---------------
|  1 |  false |
|  2 |   true |
|  3 |   true |
|  4 |   true |
|  5 |  false |
|  6 |  false |

您可以使用
案例
语句:

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

结果:

| ID |   IDS |
--------------
|  1 | FALSE |
|  2 |  TRUE |
|  3 |  TRUE |
|  4 |  TRUE |
|  5 | FALSE |
|  6 | FALSE |
| ID | RESULT |
---------------
|  1 |  false |
|  2 |   true |
|  3 |   true |
|  4 |   true |
|  5 |  false |
|  6 |  false |
好了


是的,我刚刚更新了问题。。我不知道如何使它工作
CASE
是标准的方法。@hvd是的-我就是这么做的。。假设它不是硬编码列表。这应该是
情况,当b.Id为空时…
。您现在拥有的是一种可行的方法,但它测试的是
b.Id=NULL
,这从来都不是真的。它也不是假的,但是
ELSE
表达式仍然会被选中。谢谢,伙计:)修复了(我也不知道Sql Fiddle!呜!)也许你可以详细解释一下你的语句“ok now”,它有点短。