在以下代码中SELECT distinct title,story,playPartId FROM dysj WHERE story LIKE '%家%' then '与家相关'OR story LIKE '%热血%' then '热血题材'OR story LIKE '%学校%' then '学校背景' else '其他关系' order by playPartId desc
时间: 2023-12-24 09:02:33 浏览: 25
在你提供的代码中,有一些语法错误。以下是修正后的代码:
```sql
SELECT DISTINCT title, story, playPartId,
CASE
WHEN story LIKE '%家%' THEN '与家相关'
WHEN story LIKE '%热血%' THEN '热血题材'
WHEN story LIKE '%学校%' THEN '学校背景'
ELSE '其他关系'
END AS relationship
FROM dysj
ORDER BY playPartId DESC;
```
在这个查询中,我们使用了CASE语句来根据story列的内容进行条件判断,并返回相应的关系。使用DISTINCT关键字来去除重复的行。最后,通过ORDER BY子句按照playPartId降序排列结果。
请确保表名、列名以及逻辑符号的正确性,并根据实际情况进行调整。
相关问题
a.operation_name in (select DISTINCT operation_name from mr_operation as c where c.operation_name like CONCAT('%',@operation_name,'%'))这句代码是什么意思
这段代码是一个SQL查询语句,其中涉及到了子查询和模糊匹配。
具体解释如下:
- operation_name是一个列名,表示某个操作的名称。
- @operation_name是一个变量,表示要匹配的操作名称。
- CONCAT()函数将%作为通配符,将@operation_name变量拼接成一个字符串,用于模糊匹配。
- 子查询SELECT DISTINCT operation_name FROM mr_operation as c WHERE c.operation_name LIKE CONCAT('%',@operation_name,'%')用于查询与@operation_name变量相似的操作名称列表,注意这里使用了LIKE运算符进行模糊匹配。
- 最外层查询用IN运算符将操作名称与子查询中查询到的操作名称列表进行匹配,如果匹配成功,则返回结果。
简单来说,这段代码的作用是查询操作名称与@operation_name相似的操作。
SELECT shop, DATE_FORMAT( or_time, '%Y-%m' ) or_time, CASE WHEN lopll LIKE '%中通%' THEN '中通' WHEN lopll LIKE '%邮政%' THEN '邮政' WHEN lopll LIKE '%韵达%' THEN '韵达' WHEN lopll LIKE '%顺丰%' THEN '顺丰' END as lopll , COUNT( DISTINCT l_num ) l_num FROM `stock_out` WHERE shop IN ( SELECT shop FROM all_order_data.`shop_channel` WHERE channel = '独唱团' ) AND YEAR ( or_time ) >= 2021 GROUP BY shop, or_time, lopll, l_num怎么查出sum(DISTINCT l_num)
在MySQL中,不能直接使用SUM(DISTINCT l_num)来求去重后的l_num的总和。但可以通过子查询和SUM函数来实现。具体的SQL语句如下:
```
SELECT shop,
DATE_FORMAT(or_time, '%Y-%m') or_time,
CASE
WHEN lopll LIKE '%中通%' THEN '中通'
WHEN lopll LIKE '%邮政%' THEN '邮政'
WHEN lopll LIKE '%韵达%' THEN '韵达'
WHEN lopll LIKE '%顺丰%' THEN '顺丰'
END AS lopll,
COUNT(DISTINCT l_num) l_num,
(SELECT SUM(cnt) FROM (SELECT COUNT(DISTINCT l_num) AS cnt FROM `stock_out` WHERE shop = t.shop AND or_time = t.or_time AND lopll = t.lopll GROUP BY l_num) AS temp) AS l_num_sum
FROM `stock_out` t
WHERE shop IN (SELECT shop FROM all_order_data.`shop_channel` WHERE channel = '独唱团')
AND YEAR(or_time) >= 2021
GROUP BY shop, or_time, lopll, l_num
```
在这个SQL语句中,我们使用了子查询和临时表来计算去重后的l_num的总和。具体来说,我们在最外层查询中添加了一个子查询:
```
(SELECT SUM(cnt) FROM (SELECT COUNT(DISTINCT l_num) AS cnt FROM `stock_out` WHERE shop = t.shop AND or_time = t.or_time AND lopll = t.lopll GROUP BY l_num) AS temp) AS l_num_sum
```
这个子查询首先是在内部进行了一次查询,使用了GROUP BY l_num来求出每个组(每个shop、or_time、lopll的组合)中去重后的l_num的个数。然后再在外部使用SUM函数对这些个数进行求和,得到了去重后的l_num的总和。