SELECT a,b FROM aTable
WHERE
(aTable.a,aTable.b) IN
(SELECT anotherTable.a,anotherTable.b
FROM anotherTable
WHERE anotherTable.IsActive = 1);
You have to do this:
SELECT a,b FROM aTable
WHERE
EXISTS
(
SELECT *
FROM anotherTable
WHERE anotherTable.a = aTable.a AND anotherTable.b = aTable.b
AND anotherTable.IsActive = 1
);
I prefer to write it this way though, so as to make the intent clearer:
SELECT a,b FROM aTable
WHERE
-- (aTable.a,aTable.b) IN -- leave this commented, it makes the intent more clear
EXISTS
(
SELECT anotherTable.a,anotherTable.b -- do not remove this too, perfectly fine for self-documenting code, i.e., tuple presence check
FROM anotherTable
WHERE anotherTable.a = aTable.a AND anotherTable.b = aTable.b
AND anotherTable.IsActive = 1 -- put a blank line above, to emphasize that the above condition is filter for the tuple we are looking for
);
Design patterns are bug reports against your programming language — Peter Norvig
Happy Computing! ツ
No comments:
Post a Comment