mysql把一段数据变成一个临时表
作者:码农的农
这篇文章主要介绍了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
效果:
如何将查询结果作为临时表
在MySQL中,我们可以利用子查询的方式将查询结果作为临时表。具体的步骤如下:
首先,我们需要编写一个查询语句,用于获取需要的数据。例如,我们要获取某个表中所有年龄大于18岁的用户,可以使用以下查询语句:
SELECT * FROM users WHERE age > 18;
接下来,我们需要将上述查询语句作为子查询,并使用CREATE TEMPORARY TABLE语句将其结果保存为临时表。例如,我们可以使用以下语句将查询结果保存为名为temp_table的临时表:
CREATE TEMPORARY TABLE temp_table AS ( SELECT * FROM users WHERE age > 18 );
现在,我们可以像使用普通表一样使用临时表了。例如,我们可以对临时表进行排序操作:
SELECT * FROM temp_table ORDER BY age DESC;
最后,我们需要使用DROP TABLE语句删除临时表,以释放资源。例如,我们可以使用以下语句删除刚才创建的临时表:
DROP TABLE temp_table;
示例代码
以下是一个完整的示例代码,演示如何将查询结果作为临时表,并对临时表进行排序操作:
-- 创建临时表,并将查询结果保存为临时表 CREATE TEMPORARY TABLE temp_table AS ( SELECT * FROM users WHERE age > 18 ); -- 对临时表按照年龄降序排序,并获取结果 SELECT * FROM temp_table ORDER BY age DESC; -- 删除临时表 DROP TABLE temp_table;
到此这篇关于mysql把一段数据变成一个临时表的文章就介绍到这了,更多相关mysql 数据变成临时表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!