2010-12-16 178 views
0

J'ai une table de lastNames et userNames. Je veux la valeur «le plus petit» (lexicalement parlant) pour un nom de famille et le nom d'utilisateur correspondant. Voilà ce que j'ai (et cela fonctionne):Comment faire référence à la fonction MIN SQL dans ma clause WHERE à l'aide d'une sous-table?

SELECT lastName, userName FROM user WHERE lastName IN (SELECT MIN(lastName) FROM user); 

Maintenant, je veux le faire, mais le faire sur un sous-ensemble de la table (par exemple, uniquement pour les lastNames commençant par « P »):

SELECT subT.lastName, subT.userName 
FROM (SELECT lastName, userName FROM user WHERE lastName LIKE 'p%') AS subT 
WHERE subT.lastName=MIN(subT.lastName) 

Cela ne fonctionne pas. J'ai essayé de mettre la fonction MIN comme un select_item mais je veux aussi le userName qui correspond à la fonction MIN. Comment puis-je faire cela?

Répondre

3
SELECT lastName, 
     userName 
    FROM user 
    WHERE lastName LIKE 'p%' 
ORDER BY lastName DESC 
    LIMIT 1 

Si vous prévoyez d'obtenir plusieurs utilisateurs même lastname, puis utilisez sous-requête:

SELECT lastName, 
     userName 
    FROM user 
    WHERE lastName = (SELECT MIN(lastName) 
         FROM users 
         WHERE lastName LIKE 'p%') 
+0

excellent point de départ pour moi de développer cela. Merci! – Avery