您可以加入 Table2
多次Table1
,每列一次:
SELECT Table1.id,
Table1.name,
Table2_t1.cname AS t1cname,
Table2_t1.cname AS t2cname,
Table2_L1.cname AS L1cname,
Table2_L2.cname AS L2cname,
Table2_L3.cname AS L3cname,
Table2_L4.cname AS L4cname,
Table2_L5.cname AS L5cname,
Table2_L6.cname AS L6cname,
Table2_L7.cname AS L7cname,
Table2_L8.cname AS L8cname,
Table2_L9.cname AS L9cname,
Table2_L10.cname AS L10cname
FROM Table1
JOIN Table2 AS Table2_t1 ON Table2_t1.cid = Table1.t1cid
JOIN Table2 AS Table2_t2 ON Table2_t2.cid = Table1.t2cid
JOIN Table2 AS Table2_L1 ON Table2_L1.cid = Table1.L1cid
JOIN Table2 AS Table2_L2 ON Table2_L2.cid = Table1.L2cid
JOIN Table2 AS Table2_L3 ON Table2_L3.cid = Table1.L3cid
JOIN Table2 AS Table2_L4 ON Table2_L4.cid = Table1.L4cid
JOIN Table2 AS Table2_L5 ON Table2_L5.cid = Table1.L5cid
JOIN Table2 AS Table2_L6 ON Table2_L6.cid = Table1.L6cid
JOIN Table2 AS Table2_L7 ON Table2_L7.cid = Table1.L7cid
JOIN Table2 AS Table2_L8 ON Table2_L8.cid = Table1.L8cid
JOIN Table2 AS Table2_L9 ON Table2_L9.cid = Table1.L9cid
JOIN Table2 AS Table2_L10 ON Table2_L10.cid = Table1.L10cid
WHERE Table1.active = 1
或者,您也可以加入表格一次,然后对结果进行分组:
SELECT Table1.id,
Table1.name,
MAX(IF(Table1.t1cid =Table2.cid, Table2.cname, NULL)) AS t1cname,
MAX(IF(Table1.t2cid =Table2.cid, Table2.cname, NULL)) AS t2cname,
MAX(IF(Table1.L1cid =Table2.cid, Table2.cname, NULL)) AS L1cname,
MAX(IF(Table1.L2cid =Table2.cid, Table2.cname, NULL)) AS L2cname,
MAX(IF(Table1.L3cid =Table2.cid, Table2.cname, NULL)) AS L3cname,
MAX(IF(Table1.L4cid =Table2.cid, Table2.cname, NULL)) AS L4cname,
MAX(IF(Table1.L5cid =Table2.cid, Table2.cname, NULL)) AS L5cname,
MAX(IF(Table1.L6cid =Table2.cid, Table2.cname, NULL)) AS L6cname,
MAX(IF(Table1.L7cid =Table2.cid, Table2.cname, NULL)) AS L7cname,
MAX(IF(Table1.L8cid =Table2.cid, Table2.cname, NULL)) AS L8cname,
MAX(IF(Table1.L9cid =Table2.cid, Table2.cname, NULL)) AS L9cname,
MAX(IF(Table1.L10cid=Table2.cid, Table2.cname, NULL)) AS L10cname
FROM Table1 JOIN Table2 ON Table2.cid IN (
Table1.t1cid,
Table1.t2cid,
Table1.L1cid,
Table1.L2cid,
Table1.L3cid,
Table1.L4cid,
Table1.L5cid,
Table1.L6cid,
Table1.L7cid,
Table1.L8cid,
Table1.L9cid,
Table1.L10cid
)
WHERE Table1.active = 1
GROUP BY Table1.id
我认为第一个解决方案应该更快,特别是如果你有索引Table2.cid
和外键列Table1
- 但也许值得对这两种方法进行基准测试,看看哪个更好?