是否有一个简单的SELECT语句创建一个空集?

时间:2012-03-09 14:17:41

标签: mysql select set-theory

是否有一种简单易用的方法来创建具有指定列但零行的结果表?在集合论中,这称为空集,但由于关系数据库使用多维集,因此该术语不完全适合。我尝试过这两个查询,但两者都只提供一行而不是零行:

  • SELECT''AS ID;
  • SELECT null AS ID;

但我想要的是与此查询相同的结果:

  • SELECT ID FROM sometable WHERE false;

我正在寻找一种更优雅的方式,因为我不想涉及一个表,所以查询独立于任何数据库方案。通用查询也可能更快一些(并不是对这样的查询有用)。

3 个答案:

答案 0 :(得分:3)

SELECT "ID" LIMIT 0;

没有任何真正的表格。

请注意,大多数(我的)SQL客户端只显示“空集”。但是,它实际上做了你想要的:

create table test.test_table 
select "ID" limit 0;

show create table test.test_table\G

Table: test_table
Create Table: CREATE TABLE `test_table` (
  `ID` varchar(2) character set latin1 NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

答案 1 :(得分:1)

SELECT * FROM (SELECT NULL AS ID) AS x WHERE 1 = 0

答案 2 :(得分:0)

您可以使用DUAL伪表。

SELECT whatever FROM DUAL WHERE 1 = 0

检查documentation(查找DUAL部分)。