如何使用Mysql列映射Mysql行

如何使用Mysql列映射Mysql行

我有一个Mysql表
主题表

id|markid |name
--|-------|--------
1 |1      |subject1
2 |2      |subject2
3 |3      |subject3
4 |4      |subject4

标记表
id|Mark1|mark2|Mark3|mark4
--|-----|-----|-----|------
 1|96   |95   |96   |98

我的预期结果是
  Mark|subject
  ----|--------
   96 |subject1
   95 |subject2
   96 |subject3
   98 |subject4

最佳答案

我不知道为什么你的表设计是这样的,不管怎样,如果你只想得到这个结果,你可以试试下面的sql,可能对你有帮助;)
SQL Fiddle
MySQL 5.6模式设置:

CREATE TABLE Subject
    (`id` varchar(2), `markid` varchar(7), `name` varchar(8))
;

INSERT INTO Subject
    (`id`, `markid`, `name`)
VALUES
    ('1', '1', 'subject1'),
    ('2', '2', 'subject2'),
    ('3', '3', 'subject3'),
    ('4', '4', 'subject4')
;


CREATE TABLE Mark
    (`id` varchar(2), `Mark1` varchar(5), `mark2` varchar(5), `Mark3` varchar(5), `mark4` varchar(6))
;

INSERT INTO Mark
    (`id`, `Mark1`, `mark2`, `Mark3`, `mark4`)
VALUES
    ('1', '96', '95', '96', '98')
;

问题1:
SELECT
   CASE markid WHEN 1 THEN Mark1
               WHEN 2 THEN Mark2
               WHEN 3 THEN Mark3
               WHEN 4 THEN Mark4 END AS Mark,
   name AS subject
FROM Subject
LEFT JOIN Mark ON Mark.id = 1

Results
| Mark |     name |
|------|----------|
|   96 | subject1 |
|   95 | subject2 |
|   96 | subject3 |
|   98 | subject4 |

关于php - 如何使用Mysql列映射Mysql行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37224066/

10-11 23:19