1

我正在尝试编写表面上应该是相对简单的 SQL 查询 - 但是,我似乎无法让它们工作。

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

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

上述查询有两个问题:

1)首先,上面的陈述是有效的。我的数据库引擎(mySQL)抱怨:

错误 1054 (42S22):“字段列表”中的未知列“t.name”

2) 我想在 SELF JOIN 中使用返回的表 t。但是,我不想再次调用 mystoredproc(...),因为这是一个非常昂贵的调用。

有谁知道如何解决这些问题?

顺便说一句,即使我正在使用 mySQL(现在),我希望任何提供的 SQL 片段与 db 无关(即 ANSI SQL)

4

1 回答 1

11

替换为) as t)) t

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

对于您的第二个问题:将结果mystoredproc输入到一个临时表中SELECT,然后您可以轻松地进行自连接。

于 2009-12-19T17:36:15.283 回答