Given a table like
create table foo(id integer primary key, name varchar(128) unique not null);
I am looking for a query that searches for a given name, returns the id if found, and NULL otherwise. Sort of what left join can do, except here there is no left table.
Advertisement
Answer
Use aggregation with MAX() (or MIN()):
SELECT MAX(id) AS id FROM foo WHERE name = ?;
An aggregation query like this always returns exactly 1 row with 1 column and if no name satisfies the condition in the WHERE clause then it returns NULL.
Replace ? with the name that you want.
See the demo.