Description
sql Query issued:
|
SELECT * FROM simple_table_2 t_1 WHERE ( int_field1 NOT IN (SELECT MIN(int_field1) AS int_field1 FROM simple_table_1 t_3 WHERE t_3.primary_key_id = t_1.primary_key_id AND ( (((t_3.bool_field1 = false OR t_3.decimal_field1 >= 4925)) AND ((t_3.bool_field1 AND t_3.decimal_field1 > 4925))) AND ((((t_3.bool_field1 != false OR t_3.int_field1 != 5000)) AND ((t_3.bool_field1 != true AND t_3.int_field1 BETWEEN 15 and 9999)) OR ((t_3.primary_key_id IS NOT NULL AND t_3.decimal_field1 > 4925)) AND ((t_3.int_field1 >= 5000 AND t_3.char_field1 = "N" AND NOT (t_3.bool_field1)))) AND ((NOT (t_3.bool_field1) OR t_3.decimal_field1 IS NULL))) ) ) ) ;
|
|
Result is empty set
|
|
N1QL query issued:
|
SELECT * FROM multiple_table_db_7233_simple_table_2 t_1 WHERE int_field1 NOT IN (SELECT RAW MIN(int_field1) AS int_field1 FROM multiple_table_db_7233_simple_table_1 t_3
|
WHERE (((t_3.bool_field1 = false OR t_3.decimal_field1 >= 4925)) AND ((t_3.bool_field1 AND t_3.decimal_field1 > 4925))) AND ((((t_3.bool_field1 != false OR t_3.int_field1 != 5000)) AND ((t_3.bool_field1 != true AND t_3.int_field1 BETWEEN 15 and 9999)) OR ((t_3.primary_key_id IS NOT NULL AND t_3.decimal_field1 > 4925)) AND ((t_3.int_field1 >= 5000 AND t_3.char_field1 = "N" AND NOT (t_3.bool_field1)))) AND ((NOT (t_3.bool_field1) OR t_3.decimal_field1 IS NULL))) )
|
|
Result is all 1000 documents.
|
|
|
After reducing above subqueries I found the inner subquery:
|
SELECT RAW MIN(int_field1) AS int_field1 FROM multiple_table_db_7233_simple_table_1 t_3
|
WHERE (((t_3.bool_field1 = false OR t_3.decimal_field1 >= 4925)) AND ((t_3.bool_field1 AND t_3.decimal_field1 > 4925))) AND ((((t_3.bool_field1 != false OR t_3.int_field1 != 5000)) AND ((t_3.bool_field1 != true AND t_3.int_field1 BETWEEN 15 and 9999)) OR ((t_3.primary_key_id IS NOT NULL AND t_3.decimal_field1 > 4925)) AND ((t_3.int_field1 >= 5000 AND t_3.char_field1 = "N" AND NOT (t_3.bool_field1)))) AND ((NOT (t_3.bool_field1) OR t_3.decimal_field1 IS NULL))) ;
|
|
returns null in both sql and n1ql
|
|
Hence the difference lies in these queries:
|
n1ql query:
|
SELECT * FROM simple_table_2 t_1 WHERE int_field1 NOT IN [NULL];
|
|
sql query:
|
SELECT * FROM simple_table_2 t_1 WHERE int_field1 NOT IN (NULL);
|
|
n1ql query returns all 1000 documents but sql query returns empty dataset.
|
|