我在mysql查询中使用CASE语句,我必须在同一查询中检查列是否存在。
有可能这样做吗?如果是,请帮助。
我的查询为例 -
选择 案例栏1 当'状态'那么'状态' 当'价值'那么 (选择CASE ID 当id为NOT NULL时,'status1'ELSE'status2' 结束作为ScheduleStatus 来自table1 在哪里条件) 结束身份 从table2 LEFT JOIN table1 上 ... 条件..;
在上面的查询中,当执行它时,即使条件满足,我也得到结果“status2”(否则是部分)。 如果此时“id”行不存在,则结果应为“status1”。 请纠正我。
答案 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 ...