这个查询是什么意思?

时间:2010-03-18 06:30:44

标签: sql

我正在读一本关于SQL的书。

在那本书中,我看到下面的奇怪查询:

SELECT * into mycustomer from customer WHERE 1=2

在此查询中,什么是“WHERE 1 = 2”?

5 个答案:

答案 0 :(得分:25)

通常用于将一个表的结构复制到另一个表中,如您的情况。

SELECT * INTO mycustomer FROM customer WHERE 1=2

此代码在新表Customer中创建表MyCustomer的相同结构。 注意在SQL Server中,不会复制约束;所以你可能需要重新创建约束。

答案 1 :(得分:3)

1=2始终为false

这是一种指定始终评估为WHERE的{​​{1}}子句的方法。

类似的事情是false,总是评估为WHERE 1=1

答案 2 :(得分:1)

在我使用经典ASP的过去,我使用“WHERE 1 = 2”结构来检索表的列定义而不是其内容。现在有更好的方法可以通过使用对象关系映射框架来检索列定义。

我的猜测是,您正在阅读的图书有点过时,或者此查询的上下文放错位置。

答案 3 :(得分:0)

WHERE 1=2

是不可能的,所以条件总是假的。这是一个错字吗?也许是为了清除一堆变量?由于SELECT INTO会将所有列放入@COLUMNNAME vars

答案 4 :(得分:0)

除了你的情况下它只是一个SQL注入,如果1 = 1而不是真实,它将始终为假,并将返回所有客户数据