Are these queries equivalent?
Are these queries equivalent?
Putting aside any opinions on performance, I've been trying to test a notion about whether a couple queries would output the same data (ordering doesn't matter).
SELECT *
FROM articles
WHERE (
last_updated >= %s
OR id IN (1, 2, 3)
)
AND created_at IS NOT NULL
SELECT *
FROM articles
WHERE last_updated >= %s
AND created_at IS NOT NULL
UNION
SELECT *
FROM articles
WHERE id IN (1, 2, 3)
AND created_at IS NOT NULL
I think they're equivalent, but I can't prove it to myself.
Edit: Aye, looking at the replies, I'm becoming aware that I left out a couple key assumptions I've made. Assuming:
a) id is a PRIMARY KEY (or otherwise UNIQUE)
b) I mean equivalent insofar as "the rows returned will contain equivalent data same (though maybe ordered differently)"