Mysql
 sql >> база данни >  >> RDS >> Mysql

Изявление на MySQL към въртяща се таблица без използване на централна функция или обединение

Е, можете да използвате курсор

drop procedure if exists p;
delimiter $$
CREATE  PROCEDURE `p`()
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
begin 
    declare vid int(8);
    declare vname varchar(15);
    declare vsurname varchar(15);
    declare done int default 0;
    declare cname cursor for select id,name,surname from t id;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
    open cname;
    cursorloop:loop
    fetch cname into vid,vname,vsurname;
    if done = true then  
        leave cursorloop;
    end if;  
    insert into t1 (id,name) select vid,vname;
    insert into t1 (id,name) select vid,vsurname;
    end loop cursorloop;
    close cname;
end $$
delimiter ;

drop table if exists t,t1;
create table t( id int, name varchar(20), surname varchar(20));
create table t1(id int, name varchar(20));
insert into t values
( 1  , 'john'   , 'smith'),
( 2  , 'jack'   , 'brown');

call p();

MariaDB [sandbox]> select * from t1;
+------+-------+
| id   | name  |
+------+-------+
|    1 | john  |
|    1 | smith |
|    2 | jack  |
|    2 | brown |
+------+-------+
4 rows in set (0.00 sec)

Но защо не използвате съюз?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да задам пълен sql дата и час с помощта на java, а не само датата?

  2. Как да възстановим MySQL база данни от WAMP?

  3. Bind_param трудности

  4. само данни за mysqldump

  5. Активирайте Python за свързване с MySQL чрез SSH тунелиране