MySQL查询lopll的值为“顺丰(物流单打印),停用 天猫中通(菜鸟打印),停用 天猫中通(菜鸟打印)-停用 顺丰(物流单打印)-停用 天猫中通(菜鸟打印),停用 顺丰(物流单打印)-停用 韵达 天猫中通(菜鸟打印)-停用 天猫中通(菜鸟打印),停用 天猫中通(菜鸟打印,)-停用”怎么查询得出结果为‘中通’或者‘邮政‘或者韵达或者‘顺丰’’’
时间: 2023-08-16 17:05:57 浏览: 82
你可以使用 MySQL 的 LIKE 关键字和通配符来实现这个查询。比如下面这条 SQL 语句可以查询出包含“中通”、“邮政”、“韵达”、“顺丰”中任意一个的记录:
```
SELECT * FROM 表名 WHERE lopll LIKE '%中通%' OR lopll LIKE '%邮政%' OR lopll LIKE '%韵达%' OR lopll LIKE '%顺丰%';
```
其中 `%` 是通配符,表示匹配任意字符。这样就可以查询出包含指定关键字的记录了。注意,如果你的表中有大量记录,这样的查询可能会比较耗时,建议使用合适的索引来优化查询性能。
相关问题
lopll的值为“顺丰(物流单打印),停用 天猫中通(菜鸟打印),停用 天猫中通(菜鸟打印)-停用 顺丰(物流单打印)-停用 天猫中通(菜鸟打印),停用 顺丰(物流单打印)-停用 韵达 天猫中通(菜鸟打印)-停用 天猫中通(菜鸟打印),停用 天猫中通(菜鸟打印,)-停用”怎么查询得出结果为‘中通’或者‘邮政‘或者韵达或者‘顺丰’’’
如果你希望查询出lopll中包含‘中通’或者‘邮政’或者‘韵达’或者‘顺丰’的值,可以使用字符串的包含关系判断函数,例如Python中的'in'操作符或者Java中的contains()方法。具体实现方式如下:
Python:
```python
lopll = "顺丰(物流单打印),停用 天猫中通(菜鸟打印),停用 天猫中通(菜鸟打印)-停用 顺丰(物流单打印)-停用 天猫中通(菜鸟打印),停用 顺丰(物流单打印)-停用 韵达 天猫中通(菜鸟打印)-停用 天猫中通(菜鸟打印,)-停用"
if '中通' in lopll:
print('包含中通')
if '邮政' in lopll:
print('包含邮政')
if '韵达' in lopll:
print('包含韵达')
if '顺丰' in lopll:
print('包含顺丰')
```
Java:
```java
String lopll = "顺丰(物流单打印),停用 天猫中通(菜鸟打印),停用 天猫中通(菜鸟打印)-停用 顺丰(物流单打印)-停用 天猫中通(菜鸟打印),停用 顺丰(物流单打印)-停用 韵达 天猫中通(菜鸟打印)-停用 天猫中通(菜鸟打印,)-停用";
if (lopll.contains("中通")) {
System.out.println("包含中通");
}
if (lopll.contains("邮政")) {
System.out.println("包含邮政");
}
if (lopll.contains("韵达")) {
System.out.println("包含韵达");
}
if (lopll.contains("顺丰")) {
System.out.println("包含顺丰");
}
```
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的总和。