mysql把一段數(shù)據(jù)變成一個(gè)臨時(shí)表
例子:有一組手機(jī)號(hào),查詢mysql庫(kù)里有的是會(huì)員,沒(méi)有的標(biāo)記為非會(huì)員,按序號(hào)順序顯示
1. 先把一組手機(jī)號(hào)作為一個(gè)字段
SELECT '15555555555,12222222222' AS phone FROM DUAL
效果:

2.把這個(gè)字段分割成一列數(shù)據(jù)
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. 關(guān)聯(lián)對(duì)應(yīng)的mysql數(shù)據(jù)庫(kù)其他表,把字段對(duì)應(yīng)好,查出來(lái)
SELECT
aaa.phone '會(huì)員手機(jī)號(hào)',
IF
( ISNULL( mmm.phone ), '非會(huì)員', '會(huì)員' ) '是否會(huì)員'
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.自帶排序的序號(hào)
SELECT
@1 := @1+1 AS '序號(hào)',
aaa.phone '會(huì)員手機(jī)號(hào)',
IF
( ISNULL( mmm.phone ), '非會(huì)員', '會(huì)員' ) '是否會(huì)員'
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效果:

如何將查詢結(jié)果作為臨時(shí)表
在MySQL中,我們可以利用子查詢的方式將查詢結(jié)果作為臨時(shí)表。具體的步驟如下:
首先,我們需要編寫一個(gè)查詢語(yǔ)句,用于獲取需要的數(shù)據(jù)。例如,我們要獲取某個(gè)表中所有年齡大于18歲的用戶,可以使用以下查詢語(yǔ)句:
SELECT * FROM users WHERE age > 18;
接下來(lái),我們需要將上述查詢語(yǔ)句作為子查詢,并使用CREATE TEMPORARY TABLE語(yǔ)句將其結(jié)果保存為臨時(shí)表。例如,我們可以使用以下語(yǔ)句將查詢結(jié)果保存為名為temp_table的臨時(shí)表:
CREATE TEMPORARY TABLE temp_table AS (
SELECT * FROM users WHERE age > 18
);
現(xiàn)在,我們可以像使用普通表一樣使用臨時(shí)表了。例如,我們可以對(duì)臨時(shí)表進(jìn)行排序操作:
SELECT * FROM temp_table ORDER BY age DESC;
最后,我們需要使用DROP TABLE語(yǔ)句刪除臨時(shí)表,以釋放資源。例如,我們可以使用以下語(yǔ)句刪除剛才創(chuàng)建的臨時(shí)表:
DROP TABLE temp_table;
示例代碼
以下是一個(gè)完整的示例代碼,演示如何將查詢結(jié)果作為臨時(shí)表,并對(duì)臨時(shí)表進(jìn)行排序操作:
-- 創(chuàng)建臨時(shí)表,并將查詢結(jié)果保存為臨時(shí)表
CREATE TEMPORARY TABLE temp_table AS (
SELECT * FROM users WHERE age > 18
);
-- 對(duì)臨時(shí)表按照年齡降序排序,并獲取結(jié)果
SELECT * FROM temp_table ORDER BY age DESC;
-- 刪除臨時(shí)表
DROP TABLE temp_table;到此這篇關(guān)于mysql把一段數(shù)據(jù)變成一個(gè)臨時(shí)表的文章就介紹到這了,更多相關(guān)mysql 數(shù)據(jù)變成臨時(shí)表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
linux服務(wù)器清空MySQL的history歷史記錄 刪除mysql操作記錄
mysql歷史記錄上可能留下了很多敏感信息,比如密碼什么的,需及時(shí)清空歷史記錄,下面分享一下inux服務(wù)器清空MySQL的history歷史記錄的方法2014-01-01
MySQL中大數(shù)據(jù)表增加字段的實(shí)現(xiàn)思路
最近遇到的一個(gè)問(wèn)題,需要在一張將近1000萬(wàn)數(shù)據(jù)量的表中添加加一個(gè)字段,但是直接添加會(huì)導(dǎo)致mysql 奔潰,所以需要利用其他的方法進(jìn)行添加,這篇文章主要給大家介紹了MySQL中大數(shù)據(jù)表增加字段的實(shí)現(xiàn)思路,需要的朋友可以參考借鑒。2017-01-01
Mysql更新varchar存儲(chǔ)Json數(shù)據(jù)的操作方法
這篇文章主要介紹了Mysql更新varchar存儲(chǔ)Json數(shù)據(jù)的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-12-12
在MySQL中使用mysqlbinlog flashback的簡(jiǎn)單教程
這篇文章主要介紹了在MySQL中使用mysqlbinlog flashback的簡(jiǎn)單教程,可以很方便地恢復(fù)數(shù)據(jù),作者還列出了使用時(shí)一些需要注意的地方,需要的朋友可以參考下2015-05-05

