我有一个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/