KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
It's a question of readability . There is no difference in performance. Old versions of SQL Server were silly enough to look up meta data, but not any more. SELECT foo FROM bar WHERE EXISTS (SELECT * FROM baz WHERE baz.id = bar.id); SELECT foo FROM bar WHERE EXISTS (SELECT 1 FROM baz WHERE baz.id = bar.id); I am not considering NULL or "fun variants" which don't seem intuitive to me. SELECT foo FROM bar WHERE EXISTS (SELECT NULL FROM baz WHERE baz.id = bar.id); SELECT foo FROM bar WHERE EXISTS (SELECT 1/0 FROM baz WHERE baz.id = bar.id); The question popped up in comments just now. I researched the manuals of the most popular RDBMS: MS SQL seems to favor SELECT * in the manual . The example in the PostgreSQL 9.4 manual uses SELECT 1 . Oracle 11g has SELECT * in the language reference . MySQL 5.7 has SELECT * in the reference manual but also SELECT 1 in the comments. SQLite has no example in the language reference . A search on SO for code:"EXISTS (SELECT 1" yields 5,048 results. A search on SO for code:"EXISTS (SELECT *" yields 5,154 results. Updated links and counts 07.2015. So SELECT * has the popular vote and the big commercial RDBMS on its side. I
Tags (comma-separated)
Save Edits
Cancel