使用“this”式参考参考当前表格?

时间:2012-02-14 07:14:14

标签: sqlite

我有以下查询:

SELECT * from foo where timestamp = (select max(timestamp) from foo)

其中“foo”是指表名。

我的问题是我无法访问此表“name”,但是有一个api,负责根据需要传递给它的密钥引用特定的表。 然后,ApI接受第二个“where子句”参数,并将这两个部分连接起来形成一个查询。

因此,正如上面提到的查询所要求的那样,我需要知道内部select语句的表名,它显然作为“where”子句,但没有已知的表名。

是否可以使用这样的东西:

SELECT * from foo where timestamp = (select max(timestamp) from "this")

其中“this”是指当前表?

我是SQL的新手,因此如果这是SQLite中明显的行为,这个问题可能看起来有点愚蠢

Thnx提前......

1 个答案:

答案 0 :(得分:1)

不,SQL没有那样的东西。毕竟,从多个表中选择时,它会引用哪个表?它允许为表(select * from foo as bar)提供本地名称,但不能在嵌套选择中用作表名。

您唯一的机会是以某种方式获取从键到表名的映射。

如果这是在您无权访问的某个库中,但至少可以开始使用数据库连接(C / C ++中的sqlite3 *),则可以设置授权程序以查看哪些表图书馆正在阅读以对其进行逆向工程。您可能会滥用它,以至于您调用一个带有'false'的查询,因此它不返回任何内容,但是授权者会使用您需要的表名调用,而不是使用正确的位置进行真正的调用。但这非常复杂,所以首先尝试以更简单的方式进行映射。

我应该补充说,它看起来像一个非常糟糕的设计。在多个表中拆分相同类型的记录是不必要的复杂(sqlite没有你想要的任何限制),如果类型不同,你需要知道它是什么,所以API应该明确表或至少定义了映射规则。