mysql 想要實作下面的功能,SQL陳述句怎么寫?急用,在線等
AAA表中資料如下:
a列 b列 c列
A 1 5
B 3 6
想要的結果如下:
a列 d列
A 1
A 2
A 3
A 4
A 5
B 3
B 4
B 5
B 6
uj5u.com熱心網友回復:
#創建數字輔助表
CREATE TABLE nums(
a INT UNSIGNED NOT NULL PRIMARY KEY
)ENGINE=INNODB;
CREATE PROCEDURE pCreateNums(n INT UNSIGNED)
BEGIN
DECLARE s INT UNSIGNED DEFAULT 1;
TRUNCATE TABLE NUMS;
WHILE s <= n DO
BEGIN
INSERT INTO nums SELECT s;
SET s = s+1;
END;
END WHILE;
END;
#往輔助表中插入資料
CALL pCreateNums(1000);
#測驗資料
Create table `AAA`(`a列` varchar(21),`b列` int,`c列` int);
Insert into AAA
select N'A',1,5 union all
select N'B',3,6;
#解決方案
Select a.a列,b.a from AAA a
inner join nums b
where b.a between a.b列 and a.c列
uj5u.com熱心網友回復:
區間跨度有限的時候,可以直接借助系統表Create table `AAA`(`a列` varchar(21),`b列` int,`c列` int);
Insert into AAA
select N'A',1,5 union all
select N'B',3,6;
SELECT a.a列, a.b列 + b.id as id
FROM AAA a, ( SELECT @id:=@id+1 as id FROM information_schema.columns, (SELECT @id:=-1) _ ) b
WHERE B.id <= A.c列 - A.b列
ORDER BY a.A列, B.id
uj5u.com熱心網友回復:
各位大俠,用Hive知道怎么實作嗎?uj5u.com熱心網友回復:
各位大俠,用Hive知道怎么實作嗎?uj5u.com熱心網友回復:
各位大俠,用Hive知道怎么實作嗎?uj5u.com熱心網友回復:
用輔助表或函式實作uj5u.com熱心網友回復:
能具體說下嗎uj5u.com熱心網友回復:
INSERT INTO trace(te_id,te_fy_id,te_u_id,te_fy_creationtime,te_last_second)SELECT NULL,2,3,NOW(),UNIX_TIMESTAMP(NOW()) FROM trace
WHERE (SELECT te_last_second + 600 FROM trace ORDER BY te_last_second DESC LIMIT 1) < UNIX_TIMESTAMP(NOW()) ORDER BY te_last_second DESC LIMIT 1
這里的表 id 欄位是自增主鍵,所有主鍵的值使用 null 讓sql 自增,由于insert into 陳述句不支持 where陳述句,則使用insert into 支持子查詢的特性,在插入資料的時候判斷時間,時間自己設定,我這里演示的是10分鐘,(te_last_second + 600) 該欄位為 bigint 欄位,在插入時,查詢出該欄位用倒敘排列使用 limit 取出第一個,用第一個值加上設定的時間值,大于當前時間則插入資料。
uj5u.com熱心網友回復:
SELECT AAA.A,T.R D FROM (SELECT 'A' A, 1 B,5 C FROM DUAL UNION ALL
SELECT 'B' A, 3 B,6 C FROM DUAL ) AAA
LEFT JOIN
(SELECT @R:=@R +1 R FROM (
SELECT @R:=0 R FROM INFORMATION_SCHEMA.COLUMNS) T) T ON
T.R BETWEEN AAA.B AND AAA.C ORDER BY AAA.A,T.R ;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/40268.html
標籤:MySQL
