SQL-使用IF-THEN-ELSE创建临时表

SQL-使用IF-THEN-ELSE创建临时表,sql,if-statement,Sql,If Statement,我正在尝试编写一个SQL查询,其中如果输出为'FRUIT',则使用列'FOOD_TYPE'创建临时表'FRUIT',如果不是,则使用列'FOOD_TYPE'创建临时表'vegeture' 这是我写的初始查询 select *, (CASE WHEN food LIKE 'APPLE' THEN 'FRUIT' ELSE 'VEGETABLE' END) AS FOOD_TYPE from temptable 你提出的问题引出了更多的问题。但是,尽管如此,我认为这不能在一次发言中实现。下面的

我正在尝试编写一个SQL查询,其中如果输出为'FRUIT',则使用列'FOOD_TYPE'创建临时表'FRUIT',如果不是,则使用列'FOOD_TYPE'创建临时表'vegeture'

这是我写的初始查询

select *,
(CASE 
WHEN food LIKE 'APPLE'
THEN 'FRUIT' 
ELSE 'VEGETABLE'
END) AS FOOD_TYPE
from temptable

你提出的问题引出了更多的问题。但是,尽管如此,我认为这不能在一次发言中实现。下面的TSQL(我假设您使用的是MS SQL Server)可以满足这个问题,但是您介绍的场景似乎有点奇怪,可能需要重新思考

declare @FOOD_TYPE varchar(100);
select top 1 @FOOD_TYPE = 
(CASE 
WHEN food LIKE 'APPLE' THEN 'FRUIT' 
ELSE 'VEGETABLE'
END) 
from @foods

if(@FOOD_TYPE='FRUIT') 
select FOOD_TYPE=@FOOD_TYPE into #FRUIT
else
select FOOD_TYPE=@FOOD_TYPE into #VEGETABLE

你提出的问题引出了更多的问题。但是,尽管如此,我认为这不能在一次发言中实现。下面的TSQL(我假设您使用的是MS SQL Server)可以满足这个问题,但是您介绍的场景似乎有点奇怪,可能需要重新思考

declare @FOOD_TYPE varchar(100);
select top 1 @FOOD_TYPE = 
(CASE 
WHEN food LIKE 'APPLE' THEN 'FRUIT' 
ELSE 'VEGETABLE'
END) 
from @foods

if(@FOOD_TYPE='FRUIT') 
select FOOD_TYPE=@FOOD_TYPE into #FRUIT
else
select FOOD_TYPE=@FOOD_TYPE into #VEGETABLE

这可以通过使用此查询来实现

SELECT CASE WHEN food LIKE '%APPLE%' 
            THEN (SELECT 'FRUIT' food_type INTO #FRUIT)
            ELSE (SELECT 'VEGETABLE' food_type INTO #VEGETABLE)
       END

请注意,LIKE在列中包含的关键字之前和/或之后使用%表示通配符,如果要使用“APPLE”或任何其他值,则应选择使用equal=。

这可以通过使用此查询实现

SELECT CASE WHEN food LIKE '%APPLE%' 
            THEN (SELECT 'FRUIT' food_type INTO #FRUIT)
            ELSE (SELECT 'VEGETABLE' food_type INTO #VEGETABLE)
       END

请注意,如果要使用“APPLE”或任何其他值,则LIKE在列中包含的关键字之前和/或之后使用%表示通配符,您应该选择使用equal=来代替。

您是在尝试创建一个包含表名'FRUIT'和'vegeture'的单独临时表,还是仅创建一个包含列FOOD_TYPE的临时表来存储值'FRUIT'和'vegeture'?您正在使用的多个标记,如sql server和mysql?我正在尝试创建一个新列和一个新临时表作为一个临时表if和then的结果。如果列中有“APPLE”,那么食物类型将是水果,它将创建一个临时表“FRUIT”。如果列中没有APPLE,则食物类型为蔬菜,它将使用临时表格VEGETABLE创建。您可以使用with语句根据定义的查询创建临时表格,然后将该结果用作表格。示例:使用成年人作为SELECT name FROM People FROM age>18 SELECT*FROM Manuals FROM name FROM name(如“%Jhon%”您是否尝试创建一个包含表名“水果”和“蔬菜”的单独临时表,或仅创建一个包含列FOOD_TYPE的临时表来存储值“水果”和“蔬菜”?您正在使用sql server和mysql等多个标记usingI正在尝试创建一个新列和一个新临时表,作为if和then的结果。如果列中有“APPLE”,那么食物类型将是水果,它将创建一个临时表“FRUIT”。如果列中没有APPLE,则食物类型为蔬菜,它将使用临时表格VEGETABLE创建。您可以使用with语句根据定义的查询创建临时表格,然后将该结果用作表格。示例:对于年龄大于18岁的人,将成人作为选择名称,从名为“%Jhon%”的成人中选择*,它可以通过一条语句实现,而不是“水果”或“蔬菜”,将其替换为您的选择查询,无论您的@food_type值是否为+1。无论问题旨在解决什么样的问题,都应该以不同的方式解决。它可以在一个语句中实现,而不是“水果”或“蔬菜”,将其替换为select查询,以获得您拥有的@food_type值+1以供重新思考。无论问题的目的是解决什么问题,都应该以不同的方式解决。