Je l'instruction SELECT suivante qui renvoie des données, par exemple ci-dessous:MySQL combiner UPDATE et requête SELECT
SELECT performers.ID,
performers.Name,
COUNT(*) AS CountOfDeals,
COUNT(DISTINCT(deals.Name)) AS CountOfAliases
FROM deals RIGHT JOIN performers
ON deals.name LIKE CONCAT('%', performers.name, '%')
WHERE performers.ID IN (27952, 27951, 27950, 27949, 27948)
GROUP BY Name;
Exemple de données retournées:
ID Name CountOfDeals CountOfAliases
27952 Christine Hoberg 1 0
27951 Indian Jewelry 1 0
27952 Kinky Friedman 5 3
27949 KJ-52 1 0
27960 River Whyless 1 0
Je veux combiner avec l'instruction UPDATE suivante
UPDATE performers
SET RawAliasCount = CountOfAliases,
RawDealCount = CountOfDeals
WHERE ID = ?
Toutes les valeurs nécessaires pour exécuter l'instruction update sont renvoyées dans l'instruction select ci-dessus alors j'espère que cela devrait être assez facile.
Merci.
Je crois que votre requête ne renvoie pas le résultat nécessaire pour CountOfDeals. Essayez de le vérifier avec une table vide pour les offres, il renvoie 1 toute façon. essayez d'ajouter dans where clause deals.name n'est pas null. – Tata
Et fondamentalement, c'est un tueur de performance pour utiliser JOIN interprètes sur deals.name LIKE CONCAT ('%', performers.name, '%'). Cette jointure effectuera une analyse complète de la table même si vous avez un index sur le champ deals.name. – Tata
Tata, vous pourriez avoir raison, il devrait y avoir des résultats zéro là-bas. Je l'ai récemment modifié et je devrais faire d'autres tests. – pixelkicks