SELECt 1 FROMTABLE_NAME表示“从表中返回1”。它本身并不十分引人注目,因此通常将与它一起使用
WHERe并经常使用
EXISTS(如@gbn所述,这不一定是最佳实践,但是,即使它没有真正的意义,也足以引起人们的注意(也就是说,我会使用它,因为其他人会立即使用它,并且它“立即变得更明显”。当然,这可能是粘性鸡与蛋的问题,但我通常不赘述))。
SELECt * FROM TABLE1 T1 WHERe EXISTS ( SELECt 1 FROM TABLE2 T2 WHERe T1.ID= T2.ID );
基本上,以上代码将返回表1的所有内容,而表1则具有表2的对应ID。(显然,这是一个人为的示例,但我相信它传达了这一想法。就我个人而言,我可能会这样做,
SELECt* FROM TABLE1 T1 WHERe ID IN (SELECt ID FROM TABLE2);因为我认为除非有明显的迫不得已的理由,否则
FAR 对读者更明确。
编辑
直到现在我实际上忘记了一种情况。在尝试从外部语言确定数据库中是否存在值的情况下,有时
SELECt 1 FROMTABLE_NAME会使用该值。与选择单个列相比,这没有带来明显的好处,但是,根据实现的不同,它可能会比做a获得更多的收益
SELECT*,这仅仅是因为通常情况下,数据库返回一种语言的列越多,数据就越大。结构,这意味着将花费更多时间。



