Mysql 将左联接连接到多个列?
Mysql Concatenate Left Join to more than one Column?
我有一个 MySQL Select 语句,它在左连接中连接标签。
LEFT JOIN tags t on t.tagid = et.tagid1
但我需要将标签加入其他三列。
我试过了;
LEFT JOIN tags t on t.tagid = et.tagid1, et.tagid2, et.tagid3
但是我得到一个错误。
有办法吗?这是完整的 select 声明;
SELECT ap.userid,
(
SELECT GROUP_CONCAT(t.tagname)
FROM entitytag et
LEFT JOIN tags t on t.tagid = et.tagid1
WHERE et.audioid = ap.audioid
) tagname,
FROM audioposts ap
LEFT JOIN accounts ac ON ac.id = ap.userid
WHERE ap.opid = '0'
on
子句必须有一个表达式来确定是否应该连接给定的一对行;这里你想加入 t 行,这些行的 tagid 是 tagid1、tagid2 或 tagid3 之一,所以你需要(在 ON
之后):
t.tagid = et.tagid1 or t.tagid = et.tagid2 or t.tagid = et.tagid3
或使用 IN 运算符的等效项:
t.tagId in (et.tagid1, et.tagid2, et.tagid3)
我有一个 MySQL Select 语句,它在左连接中连接标签。
LEFT JOIN tags t on t.tagid = et.tagid1
但我需要将标签加入其他三列。
我试过了;
LEFT JOIN tags t on t.tagid = et.tagid1, et.tagid2, et.tagid3
但是我得到一个错误。
有办法吗?这是完整的 select 声明;
SELECT ap.userid,
(
SELECT GROUP_CONCAT(t.tagname)
FROM entitytag et
LEFT JOIN tags t on t.tagid = et.tagid1
WHERE et.audioid = ap.audioid
) tagname,
FROM audioposts ap
LEFT JOIN accounts ac ON ac.id = ap.userid
WHERE ap.opid = '0'
on
子句必须有一个表达式来确定是否应该连接给定的一对行;这里你想加入 t 行,这些行的 tagid 是 tagid1、tagid2 或 tagid3 之一,所以你需要(在 ON
之后):
t.tagid = et.tagid1 or t.tagid = et.tagid2 or t.tagid = et.tagid3
或使用 IN 运算符的等效项:
t.tagId in (et.tagid1, et.tagid2, et.tagid3)