select 1是什么意思

select a,b from table t
where a=something
and exists
(
select 1
from table K
where K.字段1=T.字段1

)
请高手帮忙解答一下这里SELECT 1部分的意思?应用规则?是否要与EXIST 语句共同使用???
越详细越好,谢谢啦

使用select 1 from table的结果是临时得到1列(列的值为1),其行数为表的记录数(行数),如果配合exists 语句则可以快速的查询结果是否存在,而结果的具体数据不涉及到。
就像你提供的例子例子,它只查询验证K表的字段1和T的字段1是否有相等的情况,而不需要知道K表和T表哪些记录存在那样的情况,也不需要知道相等情况下其他字段的值。在应用中,效率比select * 快。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-16
本来是不想写的,但看了回答,还是写点:
网上很多人强调不要写select *,这是正确的,有必要的。
但是在谓词exists子句中写select *是一个列外,它并不返回表中所有的列,只是检测符合条件记录是否存在,就效率,占用资源,完全是没有问题的!可以放心这么写。那么我们怎么看,它没有正真返回行呢,有个测试用例:
if exists(select 1/0) print 'test'
这里的结果是test,没有返回错误,说明,并没有让select语句参与计算。本回答被提问者和网友采纳
第2个回答  2009-05-18
SELECT 1是个坏习惯,最好使用SELECT *

在一般情况下,SELECT后面输什么都没关系,因为只需要判断WHERE部分的数据是否存在,并不需要返回具体数据

但是SELECT 1在某些数据库下要被优化,这时候系统不看WHERE,直接返回一个1,那就永远都存在了
第3个回答  2009-05-18
用select 1 比用select * 好,后者会占用很多内存,这里的1只是作为一个常量,只要查询结果非空则1,select 1 往往被用在exists 后的查询语句里,或者只需片段结果存不存在而不需具体的查询结果值时。
第4个回答  2020-05-09
这段代码可以改成如下这样:
select a,b from table t
where a=something
and T.字段1 in (select K.字段1 from table K)

这样是不是好理解些?
相似回答