我有两张桌子ticket
and attr
. Table ticket
has ticked_id
领域和其他几个领域。桌子attr
有3个字段:
ticket_id - numeric
attr_type - numeric
attr_val - string
attr_type
是值的固定枚举。例如,它可以是1
, 2
or 3
.
我需要进行一个查询,其结果将是 4 列:
ticket_id
, attr_val
for attr_type=1
, attr_val
for attr_type=2
, attr_val
for attr_type=3
如果没有对应的值attr_type
in attr
表中,则 NULL 值应显示在相应的列中。
票务表:
属性表:
ticket_id |
attr_type |
attr_val |
1 |
1 |
Foo |
1 |
2 |
Bar |
1 |
3 |
Egg |
2 |
2 |
Spam |
预期输出:
ticket_id |
attr_val1 |
attr_val2 |
attr_val3 |
1 |
Foo |
Bar |
Egg |
2 |
null |
Spam |
null |
3 |
null |
null |
null |
我尝试离开加入attr
表 3 次,但不知道如何安排输出attr_type
您需要使用多个LEFT JOINs
:
SELECT
ticket.ticket_id,
a1.attr_val AS attr_val1,
a2.attr_val AS attr_val2,
a3.attr_val AS attr_val3
FROM ticket
LEFT JOIN attr a1 ON ticket.ticket_id=a1.ticket_id AND a1.attr_type=1
LEFT JOIN attr a2 ON ticket.ticket_id=a2.ticket_id AND a2.attr_type=2
LEFT JOIN attr a3 ON ticket.ticket_id=a3.ticket_id AND a3.attr_type=3
这是一个例子:SQL小提琴.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)