使用此存儲過程來獲得您的結果。這對我有用。 請根據您的數據庫更改表和列的名稱。
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)
謝謝....但是如果我想N多,如果列,60-70列,和1000年代僱員 ? – user3304713
@ user3304713如果你想有N個列,那麼你應該使用存儲過程。 – Deepak
@Deepak謝謝迪帕克....任何想法可以舉起?我是存儲過程的新手。 – user3304713