一尘不染

从表中选择1是什么意思?

mysql

我已经看到了许多有关以下内容的查询。

Select 1  
From table

1意味着什么,它将如何执行,返回什么?

另外,在哪种类型的方案中可以使用此方案?


阅读 490

收藏
2020-05-17

共1个答案

一尘不染

SELECT 1 FROM TABLE_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 FROM TABLE_NAME会使用该值。与选择单个列相比,这没有带来明显的好处,但是,根据实现的不同,它可能会比做a获得更多的收益SELECT *,这仅仅是因为通常情况下,数据库返回一种语言的列越多,数据就越大。结构,这意味着将花费更多时间。

2020-05-17