考虑以下...
DROP TABLE IF EXISTS transactions;
CREATE TABLE transactions
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,order_id INT NOT NULL
,fee1 DECIMAL(5,2) NOT NULL
,fee2 DECIMAL(5,2) NOT NULL
,fee3 DECIMAL(5,2) NOT NULL
,total DECIMAL(5,2) NOT NULL
,created DATETIME NOT NULL
);
INSERT INTO transactions VALUES
(1,123,50.00,75.00,25.00,150.00,'2015-01-01 00:00:00'),
(2,125,10.00,25.00,15.00,50.00,'2015-01-02 00:00:00');
SELECT * FROM transactions;
+----+----------+-------+-------+-------+--------+---------------------+
| id | order_id | fee1 | fee2 | fee3 | total | created |
+----+----------+-------+-------+-------+--------+---------------------+
| 1 | 123 | 50.00 | 75.00 | 25.00 | 150.00 | 2015-01-01 00:00:00 |
| 2 | 125 | 10.00 | 25.00 | 15.00 | 50.00 | 2015-01-02 00:00:00 |
+----+----------+-------+-------+-------+--------+---------------------+
SELECT id
, order_id
, 1 fee_id
, fee1 value
, created
FROM transactions
UNION
SELECT id
, order_id
, 2
, fee1
, created
FROM transactions
UNION
SELECT id
, order_id
, 3
, fee1
, created
FROM transactions;
+----+----------+--------+-------+---------------------+
| id | order_id | fee_id | value | created |
+----+----------+--------+-------+---------------------+
| 1 | 123 | 1 | 50.00 | 2015-01-01 00:00:00 |
| 2 | 125 | 1 | 10.00 | 2015-01-02 00:00:00 |
| 1 | 123 | 2 | 50.00 | 2015-01-01 00:00:00 |
| 2 | 125 | 2 | 10.00 | 2015-01-02 00:00:00 |
| 1 | 123 | 3 | 50.00 | 2015-01-01 00:00:00 |
| 2 | 125 | 3 | 10.00 | 2015-01-02 00:00:00 |
+----+----------+--------+-------+---------------------+
DROP TABLE IF EXISTS transactions_new;
CREATE TABLE transactions_new AS
SELECT id
, order_id
, 1 fee_id
, fee1 value
, created
FROM transactions
UNION
SELECT id
, order_id
, 2
, fee1
, created
FROM transactions
UNION
SELECT id
, order_id
, 3
, fee1
, created
FROM transactions;
ALTER TABLE transactions_new ADD PRIMARY KEY(id,order_id,fee_id);
SELECT * FROM transactions_new;
+----+----------+--------+-------+---------------------+
| id | order_id | fee_id | value | created |
+----+----------+--------+-------+---------------------+
| 1 | 123 | 1 | 50.00 | 2015-01-01 00:00:00 |
| 1 | 123 | 2 | 50.00 | 2015-01-01 00:00:00 |
| 1 | 123 | 3 | 50.00 | 2015-01-01 00:00:00 |
| 2 | 125 | 1 | 10.00 | 2015-01-02 00:00:00 |
| 2 | 125 | 2 | 10.00 | 2015-01-02 00:00:00 |
| 2 | 125 | 3 | 10.00 | 2015-01-02 00:00:00 |
+----+----------+--------+-------+---------------------+
将此描述为结构是对该术语过于慷慨的使用。但是我知道你要去哪里,这很好。 – Strawberry
当前表中的'order_id'是否唯一? – sn00k4h
@ sn00k4h这是一个合理的假设 – Strawberry