从子查询mysql中选择数据
Posted
技术标签:
【中文标题】从子查询mysql中选择数据【英文标题】:select data from subquery mysql 【发布时间】:2012-10-16 07:06:39 【问题描述】:select t1.table1 from table1 as t1
where t1.column1
in
(
select t2.column2 from table2 as t2
join
table3 as t3 on t2.column1=t3.column1
where t3.columnx=5
);
上面是我正在触发的 mysql 查询。还需要子查询表中的一些数据。
例如说表 t2 中的 columnxy。
查询失败
select t1.table1,t2.columnxy from table1 as t1
where t1.column1
in
(
select t2.column2 from table2 as t2
join
table3 as t3 on t2.column1=t3.column1
where t3.columnx=5
);
如果我使用外部查询的选择添加它们会给出错误“未知列”,这确实有意义。
是正确的方法还是应该用连接重写查询?
【问题讨论】:
显示失败的查询 - 我们可以提供更好的建议 添加了失败的查询。 【参考方案1】:用连接重写查询:
SELECT t1.table1, t.columnxy
FROM table1 AS t1 JOIN (
SELECT t2.column2, t2.columnxy
FROM table2 AS t2 JOIN table3 AS t3 USING (column1)
WHERE t3.columnx = 5
) t ON t1.column1 = t.column2
或者:
SELECT t1.table1, t2.columnxy
FROM table1 AS t1
JOIN table2 AS t2 ON t1.column1 = t2.column2
JOIN table3 AS t3 ON t2.column1 = t3.column1
WHERE t3.columnx = 5
【讨论】:
【参考方案2】:此时 t2 不可用。您应该为此使用连接。使用 t1.column1=t2.column2 应该可以做到。
【讨论】:
对,这就是我遇到的问题,正在寻找解决方法。以上是关于从子查询mysql中选择数据的主要内容,如果未能解决你的问题,请参考以下文章