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