2017-08-30 3 views
0

J'ai la déclaration suivante MySQL qui fonctionne correctement établi MySQL:Quelle est la syntaxe de l'instruction SELECT IN pour SQLITE?

SELECT *, max(invoiceDate) 
AS latestDate 
FROM goodsreceiptrecords 
WHERE (productKey, productIdentifier2) 
IN ((23,'Master'),(28,'Local'),(18,'Local'),(19,'Local')) AND unitPrice > 0 
GROUP BY productKey, productIdentifier1, vendorKey, storeType; 

J'ai essayé d'utiliser la même syntaxe pour SQLite mais je reçois un messase d'erreur:

sqlite3_prepare_v2 failure: row value misused 

Quelle serait la syntaxe correcte pour cette instruction SELECT dans MySQL? Au fond, ce que je suis en train de faire est de sélectionner les enregistrements correspondant aux valeurs de 2 colonnes de la table

Répondre

0

Le documentation dit:

Pour une valeur de ligne de l'opérateur, le côté gauche (ci-après "LHS") peut être une liste de valeurs entre parenthèses ou une sous-requête avec plusieurs colonnes. Mais le membre de droite (ci-après "RHS") doit être une expression de sous-requête.

Mais une clause VALUES peut remplacer une sous-requête, donc il suffit d'utiliser:

... 
WHERE (productKey, productIdentifier2) 
    IN (VALUES(23,'Master'),(28,'Local'),(18,'Local'),(19,'Local')) 
...