我正在尝试编写这个SQL:
SELECT
a.a_id as aid,
b.b_id as bid ,
c.title
FROM b ,
( SELECT
a.a_id
FROM a
WHERE a.type = '2'
) AS a
LEFT JOIN c ON b.b_id = c.c_id
如果我没有引用LEFT JOIN或select c
,那么它可以工作。如果我确实放了左连接,那么我得到一个错误,即b.b_id是一个未知列。为什么我不能在这里使用左连接或更具体地说,为什么表b中的任何列都未知?声明的第一部分是表b中的正常选择,为什么不能找到那些列?
何时使用子查询与内连接?在这个例子中:
我想要完成的是拉出某种类型的所有类别(表a),并拉出所有主题标题(表c),其中类别id与为主题id定义的类别相同(表b)。
答案 0 :(得分:1)
试试这个
SELECT
a.a_id as aid,
b.b_id as bid ,
c.title
FROM b INNER JOIN
( SELECT
a.a_id
FROM a
WHERE a.type = '2'
) AS a
LEFT JOIN c ON b.b_id = c.c_id
答案 1 :(得分:1)
如果将表“a”与“b”交换,则sql编译(但是这会给你寻找的结果吗?):
SELECT
a.a_id as aid,
b.b_id as bid,
c.title
FROM
( SELECT
a.a_id
FROM a
WHERE a.type = '2'
) AS a, b
LEFT JOIN c ON b.b_id = c.c_id