令人尴尬的简单SQL问题)

时间:2009-12-19 17:32:10

标签: mysql sql stored-procedures mysql-error-1054

我正在尝试编写表面上应该是相对简单的SQL查询 - 然而,我无法让它们发挥作用。

是否可以编写如下所示的查询:

select t.name 
  from (select * 
          from mystoredproc(1,2,3) as t) 
 where t.name = 'foobar'

上述查询存在两个问题:

1)首先,上述声明起作用。我的db引擎(mySQL)抱怨:

  

ERROR 1054(42S22):未知列   '字段列表'中的't.name'

2)我想使用返回的表t         在自我加入。但是,我不想要         必须调用mystoredproc(...)         再次,因为它是非常的         昂贵的电话。

任何人都知道如何解决这些问题吗?

顺便说一句,即使我正在使用mySQL(现在),我更愿意,如果任何提供的SQL片段是db不可知的(即ANSI SQL)

1 个答案:

答案 0 :(得分:11)

) as t)替换为) t,如

select t.name from (select * from mystoredproc(1,2,3)) t where t.name = 'foobar'

对于您的第二个问题:将结果从mystoredproc反馈到临时表中并SELECT,然后您就可以毫不费力地进行自我加入。