在WHERE子句中输出子选择数据

时间:2018-03-27 21:48:11

标签: mysql sql

我有类似这样的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不起作用。

2 个答案:

答案 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;
相关问题