我正在读一本关于SQL的书。
在那本书中,我看到下面的奇怪查询:
SELECT * into mycustomer from customer WHERE 1=2
在此查询中,什么是“WHERE 1 = 2”?
答案 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而不是真实,它将始终为假,并将返回所有客户数据