1.连接查询条件添加额外条件
2.函数使用
1.连接查询条件添加额外条件
SELECT * FROM 表A LEFT JOIN (SELECT * FROM 表B WHERE 表B.month = 1) B ON 表A.id = B.kpi WHERE 条件1;
解读:这条语句先对表B
进行了子查询,只选择了month = 1
的行,然后再和表A
做左连接,连接条件同样是表A.id = B.kpi
。这意味着在计算连接前,表B
已经被预处理,仅包含满足month = 1
的记录。最后同样在连接后的结果集上应用了WHERE
条件的条件1
。
2.函数使用
2.1 函数 substring_indexsubstring_index()
解读:
str
: 这是要从中提取子串的原始字符串。delimiter
: 这是分隔字符串中的字符,比如逗号(',')、冒号(':')等。count
:- 如果
count
是正数,则返回到分隔符第count
次出现前的所有字符。 - 如果
count
是负数,则返回从分隔符第count
次出现后(倒数计数)的所有字符。
- 如果
示例用法:
通过调整count
参数,你可以根据需要在字符串中灵活地定位和截取数据。
-
获取分隔符前的部分: 假设我们有一个IP地址列表存储在一个字段中,格式如
Sql'192.168.0.1,192.168.0.2,192.168.0.3'
,要获取第一个IP地址:SELECT SUBSTRING_INDEX('192.168.0.1,192.168.0.2,192.168.0.3', ',', 1);
结果将是
'192.168.0.1'
。 -
获取分隔符后的部分: 要获取最后一个IP地址:
SqlSELECT SUBSTRING_INDEX('192.168.0.1,192.168.0.2,192.168.0.3', ',', -1);
结果将是
'192.168.0.3'
。 -
获取两个分隔符之间的部分: 若要获取第二个和第三个IP之间的部分(不包括它们自身),可以结合两次使用
SqlSUBSTRING_INDEX
:SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('192.168.0.1,192.168.0.2,192.168.0.3', ',', 2), ',', -1);
结果将是
'192.168.0.2'
。