2009-12-14 4 views
2

L'objet de ma requête est de rechercher une chaîne longue dans une base de données. Pour accélérer ce processus, tous les enregistrements de la table longstring ont un hachage de cette chaîne sur le même enregistrement. Je veux d'abord trouver tous les enregistrements dans la table où le hachage de ma chaîne de recherche est égal à un hachage sur la table longstring. Ensuite, après avoir ce jeu de données, je veux comparer les chaînes réelles (puisque les hachages ne sont pas toujours uniques).Version mySQL de la clause 'with'

maintenant dans l'oracle ou MSSQL je faire ...

with dataset as (
    select long_string 
    from longstring 
    where hash = 'searchhash' 
) select * 
from dataset 
where long_string = 'searchstring' 

... mais MySQL ne supporte pas 'avec' clauses. Alors, quelle est ma meilleure alternative dans mysql?

Merci d'avance!

+0

Pour référence: http://stackoverflow.com/questions/1382573/how-do-you-use-the-with-clause-in-mysql –

Répondre

4

Vous pouvez le faire avec un sous-select:

select * 
from (
    select long_string 
    from longstring 
    where hash = 'searchhash' 
) AS dataset 
where long_string = 'searchstring' 
+0

.. et quelle question idiote était! Merci – Nate

2

C'est la même que une clause ET.

SELECT * 
FROm longstring 
WHERE hash = 'searchhash' 
AND long_string = 'searchstring'