英文:
Can we do a switch case with an in clause
问题
下面是代码的翻译部分:
sql_query=f"""SELECT * FROM table1
where column1 in ('{list_of_values}')
order by CASE
WHEN column2 like'a%' THEN 1
WHEN column2 like'b%' THEN 2
WHEN column2 like'c%' THEN 3
ELSE 99 END;
"""
这是你的SQL查询,它尝试使用IN
子句和CASE
语句来进行筛选和排序。但是,你说你没有得到任何返回值。
sql_query=f"""SELECT * FROM table1
where column1 = '{value1}'
order by CASE
WHEN column2 like'a%' THEN 1
WHEN column2 like'b%' THEN 2
WHEN column2 like'c%' THEN 3
ELSE 99 END;
"""
这是你的第二个SQL查询,它使用=(等于)
操作符来筛选数据,你说它返回了值。
你想知道在第一个查询中有什么问题。问题可能出现在column1 in ('{list_of_values}')
这一部分,确保list_of_values
中包含正确的数值,否则查询可能不会返回任何匹配项。如果list_of_values
不正确或为空,那么查询将无法匹配任何行。请确保list_of_values
的格式正确,并包含适当的值。
另外,确保查询中的表名和列名都正确,以及其他可能导致查询失败的问题,如数据类型不匹配等。
英文:
Can we do use an in clause with case
sql_query=f"""SELECT * FROM table1
where column1 in ('{list_of_values}')
order by CASE
WHEN column2 like'a%' THEN 1
WHEN column2 like'b%' THEN 2
WHEN column2 like'c%' THEN 3
ELSE 99 END;
"""
I am not getting any value in return but when I try
sql_query=f"""SELECT * FROM table1
where column1 = '{value1}'
order by CASE
WHEN column2 like'a%' THEN 1
WHEN column2 like'b%' THEN 2
WHEN column2 like'c%' THEN 3
ELSE 99 END;
"""
I get a value in return. What am I doing wrong in the first query. Thanks.
答案1
得分: 1
where column1 in ('{list_of_values}')
你的 '{list_of_values}'
不会起作用,它需要将每个单独的项用逗号分隔并置于单引号内,例如 where column1 in ('a','b','c','etc')
英文:
where column1 in ('{list_of_values}')
your '{list_of_values}'
isn't going to work, it needs to be each individual item comma separated and within individual quotes e.g. where column1 in ('a','b','c','etc')
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论