À l'aide de n-uplets dans ORACLE DANS la clause et une condition pour un élément du tuple
J'ai vu beaucoup de questions ici, pour l'utilisation de n-uplets dans la clause IN.
Ma situation est un peu différente des autres.
Utilisation générale des tuples dans la clause sera comme ci-dessous
Select * from MY_TABLE
where (id,name,date) IN ((1,'new','10-JUL-13'),(2, 'old','09-JUN-13'))
Considérant la requête ci-dessus, mon exigence est de récupérer les enregistrements avec le nom et l'identifiant valeurs ainsi que la date dans une gamme donnée. disons
effectiveDate <= date <= termDate
Je suis en utilisant ORACLE base de données et MyBatis ORM.
Je vais obtenir des données comme une liste d'objets, donc quand j'utilise mybatis je peux utiliser un foreach/pour boucle pour remplir les tuples, mais quand je veux utiliser l'état pour l'une de ces valeurs à partir de l'objet.
Lorsque j'utilise Mybatis pour une valeur de lire à partir d'une liste, la clause where comme ci-dessous
<where>
and (id,name) IN
<foreach item="object" collection="data" open="(" separator=","close=")">
(#{object.id},#{object.name})
</foreach>
</where>
J'ai par la condition dans la boucle.
Attendant l'avis d'un expert.
Merci à l'avance.
and date between '1/2/2013' and '2/3/2013'
ne fonctionne pas comme une finale de prédicat? Bonne chance.
Vous devez vous connecter pour publier un commentaire.
Vous cherchez quelque chose de ce genre?
Il regarde pour les paires dans la liste et vérifie les dates entre une plage de dates.
EDIT:
Je pense que vous voulez briser ce dans de multiples clauses, un pour chaque ensemble de valeurs:
join
pour le filtrage.La solution ci-dessus pour ma question est réécrit ci-dessous pour Mybatis utilisateurs
Il n'y aura pas une grosse différence de performances lorsque vous utilisez ou OU de séparer les données/conditions de la clause where.