使用CASE语句检查mysql查询中是否存在

时间:2014-04-03 07:43:39

标签: mysql

我在mysql查询中使用CASE语句,我必须在同一查询中检查列是否存在。

有可能这样做吗?如果是,请帮助。

我的查询为例 -

选择 案例栏1 当'状态'那么'状态' 当'价值'那么 (选择CASE ID 当id为NOT NULL时,'status1'ELSE'status2' 结束作为ScheduleStatus 来自table1 在哪里条件) 结束身份 从table2 LEFT JOIN table1 上 ... 条件..;

在上面的查询中,当执行它时,即使条件满足,我也得到结果“status2”(否则是部分)。 如果此时“id”行不存在,则结果应为“status1”。 请纠正我。

1 个答案:

答案 0 :(得分:0)

请参阅该页面的第三个答案 -

if not exists (select
                 column_name
           from
                 INFORMATION_SCHEMA.columns
           where
                 table_name = 'MyTable'
                 and column_name = 'MyColumn')

它也适用于mySql。

或者你可以尝试这个 -

SELECT * 
FROM information_schema.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'dbName' 
AND TABLE_NAME = 'tableName' 
AND COLUMN_NAME = 'columnName'

如果你想在CASE中查看它,可以使用获取varchar的FUNCTION - 列名并返回''如果列不存在,则返回NULL。 用函数 -

替换列名
CREATE FUNCTION Func_Check_Exists(columnName CHAR(20)) 
RETURNS CHAR(20)
DETERMINISTIC
BEGIN 

 RETURN ...;
END;

代码 -

SELECT CASE Func_Check_Exists('column1') WHEN 'status' THEN ...