我在mysql查询中使用CASE语句,我必须检查同一查询中是否存在列。
有可能这样做吗?如果是,请帮忙。
我的查询为例-
当“Status”时选择CASE column1,然后选择“Status”当“value”时(当id不为NULL时选择CASE id,然后选择“status1”,否则选择“status2”结束为table1 where condition中的ScheduleStatus)结束为table2中的Status LEFT JOIN table1 ON...where condition..;
在上面的查询中,当执行它时,我得到的结果“status2”(其他部分),即使他的条件满足。如果“id”行当时不存在,那么结果应该是“status1”。请纠正我。
见那一页的第三个答案--
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中对其进行chack,请使用一个获得varchar的函数--列名并返回''或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 ...
问题内容: 我上周一直在学习SQL,但是我不确定如何在检查约束中正确添加case语句。有人可以给我指点吗? 我有以下成绩表: 我想检查是否在AD之间,则必须为“ S1”,或者是否在EG之间,则为“ S2”。 我试图对此进行研究并提出后者,但是它不起作用..我是否正确构造了代码? 问题答案: 我认为您可以执行以下操作: 请在此处查看SQL Fiddle模式。 您不需要约束,因为正则表达式检查就足够了
我得到了一个错误: SQL错误[500310][0A000]:Amazon无效操作:Redshift表不支持指定的类型或函数(每个信息消息一个);
问题内容: 我只想获取一个表“ b”的值,如果表“ a”的值是“-”如果表“ b”的值是空的,那么即使它是“-”,也要获取表“ a”的值 Microsoft Access对以下查询说“ Missing operator”: 我认为该错误是在CASE表达式行上。 问题答案: MS Access不支持语句。用途: 我不确定Access是否支持别名,但是它可能支持 注意(尽管标签正确),问题的标题可能会
问题内容: 我正在尝试在MySQL选择查询中使用一条语句。 我在第一个语句之后出现错误。 为什么这不起作用?在MySQL查询中执行IF语句的正确方法是什么? 问题答案: 您使用的IF / THEN / ELSE构造仅在存储过程和函数中有效。您的查询将需要重组,因为您不能使用IF()函数来控制WHERE子句的流程。 可以在查询中使用的IF()函数主要用于在查询的SELECT部分中根据某些条件选择
在mySQL查询中,我希望根据WHERE子句中PDO绑定的搜索参数条件选择客户机表的行。类似于 有两种情况:A)搜索参数包含字符串或B)搜索参数为空 在A的情况下,param包含例如一个客户端号'123'。 因此,我使用:,如果客户机在表中,则查询返回客户机123。 在B的情况下,字符串为空。因此我没有使用WHERE子句,查询只是返回表中的所有客户端 我当然可以写一个IF..SELECT查询之外的
我基本上是在根据流量来源对流量进行分组 假设该表包含以下列 现在referrer是不同的-所以即使我按referrer分组-它不会说2,所以这是我使用的查询 这个很管用。但显然我会有不止一个推荐人。所以我想到用大小写语句 这并不像预期的那样起作用。 对于第一个和第二个查询--我已经创建了一个sql fiddle 第一个-http://sqlfiddle.com/#!2/70F6B/2 第二个-ht