2010-06-08 4 views
0

J'ai besoin d'aide avec une requête.sql question Sélectionnez * De * où un = deux ordre par

Je veux sélectionner dans une table, certaines valeurs, mais les valeurs dépendent de la valeur d'une autre cellule. Après je choisis, j'ai besoin de les trier.

Puis-je utiliser ELECT column FROM table WHERE one=two ORDER BY ...?

merci, Sebastian

+4

Avez-vous essayé? –

+0

oui j'ai essayé mais j'ai une erreur pour vérifier manuellement la syntaxe sql. – sebastian

+2

Pouvez-vous montrer votre requête? Alors probablement quelque chose d'autre est faux. –

Répondre

3

Oui vous pouvez, aussi longtemps que vous spell SELECT correctement.

Voici un exemple que vous pouvez copier et coller dans votre navigateur MySQL Query pour voir une requête de ce type en action:

CREATE TABLE table1 (
    id INT NOT NULL, 
    name1 VARCHAR(100) NOT NULL, 
    name2 VARCHAR(100) NOT NULL, 
    sortorder INT NOT NULL 
); 

INSERT INTO table1 (id, name1, name2, sortorder) VALUES 
(1, 'Foo', 'Foo', 4), 
(2, 'Boo', 'Unknown', 2), 
(3, 'Bar', 'Bar', 3), 
(4, 'Baz', 'Baz', 1); 

SELECT id 
FROM table1 
WHERE name1 = name2 
ORDER BY sortorder; 

Résultat:

4 
3 
1 
0

Peut-être que quelques exemples de travail aidera :

Cela renvoie plus de 8100 enregistrements d'une de mes bases de données:

SELECT * FROM fax_logs OÙ frais = service_charge

Cela renvoie plus de 2700 enregistrements de mes données:

SELECT * FROM fax_logs OÙ frais = service_charge + 5

Cela renvoie plus 6900 enregistrements:

SELECT * FROM fax_logs WHERE frais = service_charge + copies

0

J'ai peut-être mal compris votre question, mais je pense que vous essayez de comparer les valeurs des première et deuxième colonnes. Dans Mysql, vous pouvez référencer les colonnes par numéro, pas par nom, uniquement à l'intérieur de la clause ORDER BY: SELECT * FROM table ORDER BY 1 (classée par la première colonne). Vous ne pouvez pas utiliser l'index de colonne dans WHERE.