I have a list of identifiers:
(1, 2, 3, 6, 7)
And the table:
id | anothercolumn ------------------ 1 | NULL 2 | foo 4 | bar 5 | NULL 6 | NULL
I want to get values from my list that are not identifiers of my table.
Expected Result:
3, 7
SELECT without FROM
I tried something like this:
SELECT i WHERE i IN (1, 2, 3, 6, 7) AND i NOT IN (SELECT id FROM mytable);
But this is an invalid MySQL query (requires <<24>).
UNION
There is also such an opportunity:
SELECT i FROM ( SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 6 UNION SELECT 7 ) AS mylistofids LEFT JOIN mytable ON mytable.id = i WHERE mytable.id IS NULL;
This works, but if my list of identifiers gets larger, the request will be huge soon ...
Temporary table
I can also create a temporary table for my list of identifiers:
CREATE TEMPORARY TABLE mylistofids ( i INT ); INSERT INTO mylistofids (i) VALUES (1), (2), (3), (6), (7);
Then use it in the LEFT JOIN :
SELECT i FROM mylistofids LEFT JOIN mytable ON mytable.id = i WHERE mytable.id IS NULL;
This also works, but in my case, I do not have permission to create the table (temporary or not).
Do you see a way to solve this problem in the most enjoyable way?