J'ai deux tables clients et échange. Je veux obtenir des clients ID en cours d'exécution à gauche Rejoignez la requête. Mais quand j'exécute la requête, il jette une erreur.
3 Réponses :
J'espère que vous allez bien, j'ai vérifié votre requête mais j'ai trouvé 2 diff. points
1: "Sélectionnez Distinct 2: vous utilisez "(" dans votre requête que vous avez exécuté dans SQL, je pense que votre première requête est correcte qui vous donnera droit. P>
alors s'il vous plaît ne pas utiliser () dans des champs distincts. P>
merci p> Clients CODE>. ID CODE> AS CLIENT_ID CODE> à partir de CLIENTS CODE> JOIN DE GAUCHE Exchange code> sur clients code>. id code> = échange code>. client_id code> où Clients code>. iex_status code> = 'Active' Commande par Exchange code>. validid_to code> Desc " p>
Vous montrez cette requête en premier et montrant une erreur dans votre requête h2>
Alors comment puis-je obtenir un résultat unique?
J'utilise cette requête: Sélectionnez des clients distincts.Id comme c_id à partir de clients à gauche rejoint Exchange sur Client.Id = Exchange.client_id où Clients.Ex_Status = 'Active' Commande par Exchange.Validity_To Desc
@AJ Clarifiez via des modifications, pas des commentaires. Donnez un exemple de reproductible minimal .
Ajouter mais à partir de votre coup d'écran, il semble que vous utilisiez la parenthèse après Exchange code>. validité_to code> cette colonne en sélection, sinon il lancera cette erreur validation_to code> n'est pas dans la liste de sélection; Ceci est incompatible avec distinct distinct code> c'est pourquoi vous avez l'erreur p> p>
@ Sstrowberry, lorsque vous sélectionnez uniquement des colonnes de résultats de résultat distinctes, ne peut être utilisée dans l'ordre par. Cependant, cette réponse ne résout pas le problème de l'OP.
@Strowberry dbfiddle.uk/... Pouvez-vous vérifier ce lien sur Distinct et Commander par
L'astucieux ne veut pas sélectionner cette colonne Si ce n'est pas une solution. Voir le lien en double sur la question de savoir ce que les besoins de l'intérêt.
@jarlh ah, je suis corrigé. Il s'agit d'une nouvelle fonctionnalité de MySQL 8, non présente dans MySQL 5.x (montrant la date de décharge que je suis) et n'est pas présent dans Mariadb non plus. Quoi qu'il en soit, je doute que cela soit pertinent pour le problème de l'OP.
Selon votre image ci-jointe, vous pouvez modifier des alias hors des accolades tels que -
select distinct
(`clients`.`id` as `client_id`) as 'client_id'
from `clients`
left join `exchange`
on `clients`.`id` = `exchange`.`client_id`
where
`clients`.`iex_status` = 'Active'
order by
`exchange`.`validity_to` desc
La requête Vous avez eu une erreur sur
() code> autour de`clients`.`id` comme` client_id` code> qui a provoqué l'erreur.Je ne vois rien de mal avec votre code et éventuellement la requête de votre question n'est même pas ce que vous avez réellement couru pour générer cette erreur. Remarque: vous NE PAS I> Besoin de ces backtes laids, vous pouvez donc les supprimer.
Y a-t-il un autre moyen de?
Quelle est votre sortie après avoir supprimé ()? Est-ce toujours causant une erreur?
Je n'utilise pas ()
Sélectionnez Distinct
Clients.Id Code> commeClient_id Code> à partir deClients CODE> Joindre gaucheExchange code> surClients code>.id code> =échange code>.client_id code> oùclients code>.iex_status code> = "actif" commander paréchange code>.validid_to code> DescSélectionnez des clients distincts.Id comme c_id à partir de clients à gauche rejoignez Exchange sur Clients.Id = Exchange.client_id où Clients.Ex_Status = 'Active' Commande par Exchange.Validity_To Desc
Ne devez-vous pas d'abord choisir une colonne avant de pouvoir commander par elle? Je ne vois pas Exchange.Validity_to dans votre sélection.
# 3065 - Expression n ° 1 de la clause par clause ne figure pas dans Sélectionner la liste, références Colonne 'crm.exchange.validity_to' qui n'est pas dans la liste de sélection; Ceci est incompatible avec distinct
Comment vous attendez-vous aux données (C1, C2) (1,3), (2,2), (1,1),
Sélectionnez Distinct C1 ... Commande par C2 Code> à commander?S'il vous plaît Utiliser du texte, pas des images / liens, pour le texte - y compris les tableaux et les erds. Utilisez des images uniquement pour ce qui ne peut pas être exprimé en texte ou pour augmenter le texte. Les images ne peuvent pas être recherchées ou coupées et collées. PS Lorsque vous êtes googlé pour "Site: Stackoverflow.com" et votre message sans votre # Strings & Expression #, qu'avez-vous appris?