我有类似这样的SQL查询,它完美无缺:
SELECT a.id AS thingId
FROM t1 a
JOIN t2 z
ON z.refId = a.id
WHERE z.category IN (
SELECT y.id
FROM t3 x
JOIN t4 y
ON x.category = y.id
WHERE x.id = :a)
LIMIT 1;
但我也需要来自子选择的列,如何在输出中获得x.data
?不幸的是,SELECT x.data, a.id AS thingId
不起作用。
答案 0 :(得分:0)
使用其他JOIN
而不是IN
SELECT a.id AS thingId, x.data
FROM t1 AS a
JOIN t2 AS z ON z.refId = a.id
JOIN t4 AS y ON y.id = z.category
JOIN t3 AS x ON x.category = y.id
WHERE x.id = :a
LIMIT 1
答案 1 :(得分:0)
加入主查询
SELECT extra.data, a.id AS thingId
FROM t1 a
JOIN t2 z
JOIN t3 extra ON extra.category=z.id
ON z.refId = a.id
WHERE z.category IN (
SELECT y.id
FROM t3 x
JOIN t4 y
ON x.category = y.id
WHERE x.id = :a)
LIMIT 1;