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. Mysqli 2 अलग-अलग डेटाबेस से तालिकाओं में शामिल हों

  2. सत्र और सत्र डेटा संग्रहीत करने के लिए कौन सा MySQL डेटाबेस इंजन बेहतर है:MyISAM या InnoDB?

  3. Laravel 4 माइग्रेशन 1072 त्रुटि फेंक रहा है

  4. डीबीवर का उपयोग करके मारियाडीबी से कनेक्ट करने में असमर्थ

  5. sql . में 3 महीने से अधिक पुराना रिकॉर्ड प्रदर्शित करें