J'ai 5 tables jointes comme suit: Je veux ma clause où trouver les cas où tous les champs code> code> dans les 5 tables commencent par " 55 'mais certains font. P> Voici un exemple de jouet. Je suis désolé qu'il soit très difficile de poster les tables et les données exactes en raison de la complexité. Cet échantillon transmet la signification et le boîtier: p> T1: p> t2: p> T3: p> t5: p> t5: p> Dans ces 5 tableaux, il y a deux lignes dans chaque table qui partage le même code code> parmi les 5 tables. Je suis intéressé à trouver les lignes qui ont la version code> Démarre avec
55 code> dans certaines tables (c'est-à-dire satisfaites ou relevé), mais pas toutes les tables (c'est-à-dire satisfaites de non et) . Dans mon exemple de jouet, cette condition est satisfaite par des lignes avec
nom code>:
(aa, jj, gg, jj, mm) code> (qui ont tous le code
Code>
11 code>). Mais les autres rangées ne devraient pas sortir de la requête. Pourquoi? Parce que l'une de leur
version code> commence par
55 code>, (
nom code>:
bb code>,
ee code >,
HH code>,
kk code>,
mm code>), ou parce que tous ont
version code> commence par
55 code> (
nom code>:
cc code>,
ff code>,
ii code>,
ll code>,
oo code>). p> p>
3 Réponses :
Vous pouvez ajouter:
where (t1.version like '55%' or t2.version like '55%' or t3.version like '55%' or t4.version like '55%' or t5.version like '55%' ) and (least(t1.version, t2.version, t3.version, t4.version, t5.version) not like '55%' or greatest(t1.version, t2.version, t3.version, t4.version, t5.version) not like '55%' )
Ce sera vrai aussi si toutes les 5 versions commencent par 55 mais op veulent certains et pas tous en même temps
where (t1.version like '55%' or -- at least one version starts with 55 t2.version like '55%' or t3.version like '55%' or t4.version like '55%' or t5.version like '55%') and not (t1.version like '55%' and -- all versions start with 55, so we negate with NOT t2.version like '55%' and t3.version like '55%' and t4.version like '55%' and t5.version like '55%') The first clause means that at least one of the version fields starts with 55.The second clause (which is negated with NOT) would only be true if the all started with 55.
Si votre table n'est pas trop grosse, vous pouvez également essayer quelque chose comme ceci:
WHERE CONCAT_WS(LEFT(t1.version, 2), LEFT(t2.version, 2), LEFT(t3.version, 2), LEFT(t4.version, 2), LEFT(t5.version, 2)) IN ('55' , '5555', '555555', '55555555');
Duplicaillard possible de Query 5 tables à vérifier quand elles Différent dans un champ
Pouvez-vous indiquer quelques échantillons de données avec des résultats attendus? Je trouve votre critère un peu difficile à comprendre.