2009-06-29 76 views
2

我想确定某个列是否存在于任何jdbc驱动程序的表中。我该如何做一个总是返回零行的选择

为了了解表中的列,我必须对该表进行查询,然后获取信息的ResultSetMetaData,但这在99%的时间内相当昂贵。

在MySQL中我有:

SELECT * FROM tablename LIMIT 0,0

在InterSystems公司的Caché我:

SELECT TOP 0 * FROM tablename

但是,例如,在JavaDB之外,我不能在所有应用任何限制。

是否有任何通用查询会给我相同的结果,并仍然与数据库性能公平?

在此先感谢。

回答

22
SELECT * FROM tableName WHERE 'You' = 'Smart' 
7

SELECT * FROM table_name WHERE 1 = 2;

4
select * from tablename where 1 != 1 
+0

在某些数据库上,1会引用*第一列*。即使如此,这将工作:即使NULL不等于NULL。 – Andomar 2009-06-29 16:35:04

+1

不适用于许多数据库。应该是1 <> 1 – 2009-06-29 18:36:32

3

无关,但如果您只是需要MySQL中的列,则可以运行SHOW FIELDS FROM tablename。这会返回列和关联的信息。

17

......或者你可以使用DatabaseMetaData路由。

有一个“getColumns”方法,可以在不创建结果集的情况下执行所需的操作。