2014-04-01 52 views

回答

0

如果你只是想輸出,然後用一個查詢:

select id, name, salary, salary-1, salary-2, salary-3, salary-4 
from table t; 

如果你真的想這些列添加到表中,你可以使用alter table add column,然後更新值。

+0

謝謝....但是如果我想N多,如果列,60-70列,和1000年代僱員 ? – user3304713

+0

@ user3304713如果你想有N個列,那麼你應該使用存儲過程。 – Deepak

+0

@Deepak謝謝迪帕克....任何想法可以舉起?我是存儲過程的新手。 – user3304713

0

使用此存儲過程來獲得您的結果。這對我有用。 請根據您的數據庫更改表和列的名稱。

DELIMITER $$ 
DROP PROCEDURE IF EXISTS my_proc$$ 

CREATE PROCEDURE my_proc(n INT) 
proc : BEGIN 

SET @q = CONCAT('SELECT ID, NAME, SALARY'); 
SET @num = 1; 

select_loop : LOOP 

    SET @q = CONCAT(@q, ', SALARY - ',@num); 

    IF n = 0 THEN 
     LEAVE select_loop; 
    END IF; 

    SET n = n - 1; 
    SET @num = @num + 1; 

END LOOP; 

SET @q = CONCAT(@q, ' FROM sal'); 

PREPARE stmt FROM @q; 
EXECUTE stmt; 
DEALLOCATE PREPARE stmt; 

END$$ 

DELIMITER ; 

呼叫薪金列數你想輸出的存儲過程

mysql> CALL my_proc(4); 
+----+------+--------+------------+------------+------------+------------+------------+ 
| ID | NAME | SALARY | SALARY - 1 | SALARY - 2 | SALARY - 3 | SALARY - 4 | SALARY - 5 | 
+----+------+--------+------------+------------+------------+------------+------------+ 
| 1 | jose | 100 |   99 |   98 |   97 |   96 |   95 | 
| 2 | kevi | 100 |   99 |   98 |   97 |   96 |   95 | 
| 3 | jams | 200 |  199 |  198 |  197 |  196 |  195 | 
| 4 | sanj | 400 |  399 |  398 |  397 |  396 |  395 | 
+----+------+--------+------------+------------+------------+------------+------------+ 
4 rows in set (0.00 sec) 

Query OK, 0 rows affected (0.00 sec) 
+0

感謝它的一個偉大的工作,其工作正常....是否有可能將它保存到一個新的表或現有的表...?所以我可以從MySQL中取出... – user3304713

+0

感謝DEEPAK我變成了......感謝您的幫助: - ) – user3304713

+0

我沒有足夠的聲望投票答案....當我得到,我表示願意......你的回答是有幫助的:-) – user3304713