mysql 把一段数据变成一个临时表-查询没有的数据也显示

例子:有一组手机号,查询mysql库里有的是会员,没有的标记为非会员,按序号顺序显示

1. 先把一组手机号作为一个字段

SELECT '15555555555,12222222222' AS phone FROM DUAL 

效果:

2.把这个字段分割成一列数据

SELECT
	substring_index( 
        substring_index( a.phone, ',', b.help_topic_id + 1 ),
         ',', - 1 ) AS phone 
FROM
	( SELECT '15555555555,12222222222' AS phone FROM DUAL ) a
	INNER JOIN mysql.help_topic b ON b.help_topic_id < (
		length( a.phone ) - length(
		REPLACE ( a.phone, ',', '' )) + 1 
	)

效果:

 

 3. 关联对应的mysql数据库其他表,把字段对应好,查出来

SELECT
	aaa.phone '会员手机号',
IF
	( ISNULL( mmm.phone ), '非会员', '会员' ) '是否会员' 
FROM
	(
	SELECT
		substring_index( 
            substring_index( a.phone, ',', b.help_topic_id + 1 ),
             ',', - 1 ) AS phone 
	FROM
		( SELECT '15555555555,12222222222' AS phone FROM DUAL ) a
	INNER JOIN mysql.help_topic b ON b.help_topic_id < ( length( a.phone ) - length( REPLACE ( a.phone, ',', '' )) + 1 )) aaa
	LEFT JOIN member mmm ON aaa.phone = mmm.phone

效果:

 

4.自带排序的序号

SELECT
  @1 := @1+1 AS '序号', 
	aaa.phone '会员手机号',
IF
	( ISNULL( mmm.phone ), '非会员', '会员' ) '是否会员' 
FROM
	(
	SELECT
		substring_index( 
            substring_index( a.phone, ',', b.help_topic_id + 1 ),
             ',', - 1 ) AS phone 
	FROM
		( SELECT '15555555555,12222222222' AS phone FROM DUAL ) a
	INNER JOIN mysql.help_topic b ON b.help_topic_id < ( length( a.phone ) - length( REPLACE ( a.phone, ',', '' )) + 1 )) aaa
	LEFT JOIN member mmm ON aaa.phone = mmm.phone,(SELECT @1 := 0 ) r

效果:

 

各位大神,如有不同意见欢迎下方留言 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值