您好,我的 mysql 有问题。我有2张 table 。
餐 table 上的工作和餐 table 上的人。
在表格工作中,我有 4 列 ID person Like
person1, person2, person3, person4, person5
5 3 111 15 8
一定是这样。
现在我想选择具有表工作但名称为人的任何行。 首先我用这个:
JOIN person p1 ON(w.person1 = p1.id)
JOIN person p2 ON(w.person1 = p1.id)
JOIN person p3 ON(w.person1 = p1.id)
JOIN person p4 ON(w.person1 = p1.id)
JOIN person p5 ON(w.person1 = p1.id)
AND USED 选择 LIKE
SELECT p1.name, p2.name, p3.name....
但是如果我有很多行,比如 10000,这个查询会很慢。
如何更改为使用 1 JOIN?
最佳答案
您的 person
表未规范化,因此为了检索数据,您必须像找到的那样多次加入,或者您可以使用 UNION ALL
查询来逆透视数据。
这种类型的查询类似于:
select *
from work w
inner join
(
select person1 p_name
from person
union all
select person2
from person
union all
select person3
from person
union all
select person4
from person
union all
select person5
from person
) p
on w.person1 = p.p_name
通过逆透视数据,您可以获取列并将其转换为行,这样您就可以对数据执行一次连接。
关于mysql - JOIN 2 Tables 和 SELECT more cell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14524163/