我有一个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 |
答案 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类似问题和类似建议。