您好我在尝试达到3的值时遇到问题,因为我的查询无法识别使用条款' IN'
选择两个国家/地区a)这是我的简单表源:
id |国家
1 | CL
2 | BR
b)这是我的SQL查询:
SELECT
(
CASE
WHEN country ='CL' THEN 1
WHEN country = 'BR' THEN 2
WHEN country IN ('BR','CL') THEN 3
ELSE 0
END) AS result
FROM countries
WHERE country IN ('BR','CL') ;
c)这是当前的输出结果:
结果
1
2
答案 0 :(得分:0)
CASE ... END expression使用快捷键评估:
CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
第一个版本返回value = compare_value的结果。该 第二个版本返回第一个条件的结果 真即可。如果没有匹配的结果值,则ELSE后的结果为 返回,如果没有ELSE部分,则返回NULL。
答案 1 :(得分:0)
您似乎想要以下内容:
// Update Qml file
Text
{
id: text1
text: "Initial"
objectName: id
}
// Find text1 in c++
QObject * o1 = root->findChild<QObject *>(QStringLiteral("text1"));
QQuickItem *text1 = qobject_cast<QQuickItem*>(o1);
// Set property
text1->setProperty("text", QVariant());
当 SELECT CASE
WHEN cntAll = 2 THEN 3
WHEN cntCL >= 1 THEN 1
WHEN cntBR >= 1 THEN 2
ELSE 0
END AS result
FROM (
SELECT COUNT(DISTINCT country) AS cntAll,
COUNT(CASE WHEN country = 'CL' THEN 1 END) AS cntCL,
COUNT(CASE WHEN country = 'BR' THEN 1 END) AS cntBR
FROM countries
WHERE country IN ('CL', 'BR')) AS t
表中存在 ('CL', 'BR')
值时,输出为countries
,否则如果仅存在3
,则输出为{ {1}},否则如果仅显示'CL'
,则输出为1
,否则输出为'BR'
。
答案 2 :(得分:0)
您输入查询的逻辑设计不合理! 首先,您需要连接country字段然后放入case表达式。
从国家/地区选择GROUP_CONCAT(国家/地区)
您将获得以下结果&#34; BR,CL,... &#34;
然后你把案例表达式放在那样:
选择 如果&#39;%CL%&#39;那么1
结果如&#39;%BR%&#39;那么2 当结果像&#39;%BR%&#39;和结果像'%CL%&#39;然后3 否则0 从 (从国家/地区选择GROUP_CONCAT(国家/地区))