具有条件左外连接的Mysql子查询

时间:2010-07-06 12:48:50

标签: mysql mysql-error-1054

尝试在子查询FROM子句中使用外部查询中的参数。

tbl1:
| id | val1 | str1 |
| 1  | 12   | sbc  |
| 2  | 22   | sds  |

tbl2:
| id | val1 | str1 |
| 1  | 1    | cp   |

尝试编写以下查询:

select * from
    tbl1 t, (select * from tbl2 where t.id = tbl2.id and tbl2.val1 = 1) tb12;

预期产出:

| id | val1 | str1 | id   | val1 | str1 |
| 1  | 12   | sbc  | 1    | 1    | cp   |
| 2  | 22   | sds  | null | null | null |

然而它失败并出现错误:

/* SQL Error (1054): Unknown column 't.id' in 'where clause' */

我在这里做错了什么?

3 个答案:

答案 0 :(得分:2)

有没有理由不使用像这样的普通旧左连接:

select * from tbl1 t1 left join tbl2 t2 on t1.id = t2.id;

答案 1 :(得分:2)

SELECT  *
FROM    tbl1 t
LEFT JOIN
        tbl2 t2
ON      t2.id = t.id
        AND t2.val1 = 1

答案 2 :(得分:0)

 SELECT * tbl1 UNION select * from tbl2;

将产生相同的结果