从派生表中选择时,“字段列表”中的mysql未知列

时间:2015-03-08 11:32:35

标签: mysql sql

我有一个sql,它从另一个sql计算的表中选择值:

select t.netlist_id from 
(select c from cl2 where pid = 1 order by id limit 1) as t

我收到以下错误消息:

  

#1054未知栏" t.netlist_id"在"字段列表"

如果我像这样更改原始的sql:

select t.* from 
(select c from cl2 where pid = 1 order by id limit 1) as t

我得到了select c from cl2 where pid = 1 order by id limit 1

的结果

为什么会发生这种情况?如何更正我的SQL?

表cl2的内容

|pic|c       |
 ------------
|1  |dcdc    |

表dcdc的内容

|netlist_id|
------------
|1         |

2 个答案:

答案 0 :(得分:0)

如果你使用SQL Server,我可以建议这个答案 但是我写了这个答案,并希望在mysql中找到答案。

SQL Server中有一个名为

的存储过程
Declare @text varchar(100)

Select @text = 'select * from' + (select top 1 c from cl2 where pid = 1 order by id)

Exec sp_sqlexec @text

此代码作为存储过程非常有用 - 在SQL Server中 - 。

答案 1 :(得分:-1)

您无法从子查询中获取表名到另一个查询的FROM子句。我建议您合并表c的{​​{1}}列中显示的所有表,并将它们放在一个表中。将以前的表名放在如下列中:

表merged_tbl:

cl2

在此之后你可以做到:

|netlist_id|type|
-----------------
|1         |dcdc|

您可能需要对数据库进行另一次重新设计操作,但仅仅查看示例数据无法知道。请查看this question类似问题和类似建议。