选择多个列而不进行多个查询 php mysql
Posted
技术标签:
【中文标题】选择多个列而不进行多个查询 php mysql【英文标题】:Select multiple columns without multiple queries php mysql 【发布时间】:2020-09-19 20:59:05 【问题描述】:如何在没有多个查询的情况下连接多个表列? 有没有更有效的方法来做到这一点? 表 1 和表 2 将有超过 3000 行数据。
表1
=========================================
ID Name skill skill2 skill3
=========================================
1 Ed 1 4 3
...
3000 Dave 200 500 345
--------------------------------------
表2
=========================
ID Skill Name
=========================
1 php
2 html
3 css
4 mysql
...
3000 python
-------------------------
例如
SELECT Table1.usrname,
(SELECT Table2.skillname FROM Table2 WHERE Table1.skill1 = Table2.Id) As skill1,
(SELECT Table2.skillname FROM Table2 WHERE Table1.skill2 = Table2.Id) As skill2,
(SELECT Table2.skillname FROM Table2 WHERE Table1.skill3 = Table2.Id) As skill3
FROM Table1
提前致谢
【问题讨论】:
你的方法没问题。 【参考方案1】:您使用相关子查询的方法似乎是解决问题的相关方法。为提高性能,请确保您在 table2(id, skillname)
上有一个索引,以便子查询高效执行。
您可能还想尝试多个连接:
select t1.username, t21.skillname skill1, t22.skillname skill2, t23.skillname skill3
from table1 t1
inner join table2 t21 on t21.id = t1.skill1
inner join table2 t22 on t22.id = t1.skill2
inner join table2 t23 on t23.id = t1.skill3
这种方法的一个优点是,如果需要,您可以轻松地从技能表中获取更多列,而不是您使用的内联子查询,后者总是返回一个标量值。
如果可能缺少技能,请使用left join
s 而不是inner join
s。
【讨论】:
以上是关于选择多个列而不进行多个查询 php mysql的主要内容,如果未能解决你的问题,请参考以下文章
如何正确使用连接/子查询从多个表中选择数据? (PHP-MySQL)