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中与表2中的ID相对应的所有内容。(显然,这是一个人为的例子,但我相信它传达了这个想法。就我个人而言,我可能会把上面的SELECT * FROM TABLE1 T1 WHERE ID IN (SELECT ID FROM TABLE2);作为SELECT * FROM TABLE1 T1 WHERE ID IN (SELECT ID FROM TABLE2);,因为我认为这对读者来说更明确,除非有令人信服的理由不这样做)。
编辑
实际上有一种情况我刚刚才忘记。在试图从外部语言确定数据库中是否存在值的情况下,有时会使用SELECT 1 FROM TABLE_NAME。与选择单个列相比,这并没有明显的好处,但是,根据实现的不同,它可能比执行SELECT *有很大的好处,因为通常情况下,DB返回给一种语言的列越多,数据结构就越大,这反过来意味着将花费更多的时间。