I've got a query that looks something like this:
SELECT   * FROM table WHERE   (col1, col2) in (     ('col1_val1', 'col2_val1'),     ('col1_val2', 'col2_val2'),     ('col1_val3', 'col2_val3'),   )   This works in MySQL, but fails in sqlite3 with a syntax error:
Error: near ",": syntax error   How can I rewrite this query to an equivalent one that works in sqlite3?
Choose your favourite version:
http://sqlfiddle.com/#!5/6169b/9
CREATE TEMPORARY TABLE pair (a INTEGER, b INTEGER); INSERT INTO pair (a, b) VALUES (1, 1); INSERT INTO pair (a, b) VALUES (2, 2); ....   data IN pairs; if pair(a,b) is not unique
SELECT * FROM data WHERE EXISTS (   SELECT NULL   FROM  pair   WHERE pair.a = data.a     AND pair.b = data.b );   data IN pairs; if pair(a,b) is unique
SELECT     data.* FROM       data INNER JOIN pair         ON pair.a = data.a        AND pair.b = data.b;   data NOT IN pairs; if pair(a,b) is unique
SELECT    data.* FROM      data LEFT JOIN pair    ON pair.a = data.a   AND pair.b = data.b WHERE pair.a IS NULL    OR pair.b IS NULL;   data IN pairs; if pair(a,b) is not unique
SELECT * FROM data WHERE EXISTS (   SELECT NULL   FROM  (     SELECT 1 AS a, 1 AS b     UNION ALL     SELECT 2 AS a, 2 AS b     UNION ALL     SELECT 3 AS a, 3 AS b   ) AS pair   WHERE pair.a = data.a     AND pair.b = data.b );   data IN pairs; if pair(a,b) is unique
SELECT     data.* FROM       data INNER JOIN (   SELECT 1 AS a, 1 AS b   UNION ALL   SELECT 2 AS a, 2 AS b   UNION ALL   SELECT 3 AS a, 3 AS b ) AS pair  ON  pair.a = data.a AND  pair.b = data.b;   data NOT IN pairs; if pair(a,b) is unique
SELECT    data.* FROM      data LEFT JOIN (   SELECT 1 AS a, 1 AS b   UNION ALL   SELECT 2 AS a, 2 AS b   UNION ALL   SELECT 3 AS a, 3 AS b  ) AS pair    ON pair.a = data.a   AND pair.b = data.b WHERE pair.a IS NULL    OR pair.b IS NULL; 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With