Comment sélectionner plusieurs enregistrements (lignes) à partir d'une colonne dans mysql?
Je veux afficher des quatre (4) éléments'name de ces id:
Je peux faire comme ceci?
SELECT item_name from items WHERE item_id IN ('001', '012', '103', '500')
ou
SELECT item_name from items WHERE item_id = '001' or item_id = '012' or item_id = '103' or item_id = '500'
EN RÉPONSE À TOUTES LES RÉPONSES
Bien, la plupart des réponses dit qu'il travaille, mais il ne fonctionne pas vraiment. Voici mon code:
$query = "SELECT `item_name` from items WHERE item_id IN('s001','a012','t103','p500')";
$result = mysql_query($query, $conn) or die (mysql_error());
$fetch = mysql_fetch_assoc($result) or die (mysql_error());
$itemsCollected = $fetch['item_name'];
echo $itemsCollected;
La item_id
est alphanumérique.
Bien sûr, les deux doivent travailler. Il est facile de tester cela, pourquoi ne pas essayer?
Réplique exacte de la stackoverflow.com/questions/544673/..., également demandé par vous, et il n'y a pas de véritable question ici, car il est totalement possible de faire ce que vous demandez et 1 seconde de l'essayer serait de vous montrer. Le vote pour la fermer.
Essayé plusieurs fois, seulement 1 résultat. C'est pourquoi je suis de poster cette question
Il ne fonctionne pas.. j'ai besoin d'aide de toute urgence..
Réplique exacte de la stackoverflow.com/questions/544673/..., également demandé par vous, et il n'y a pas de véritable question ici, car il est totalement possible de faire ce que vous demandez et 1 seconde de l'essayer serait de vous montrer. Le vote pour la fermer.
Essayé plusieurs fois, seulement 1 résultat. C'est pourquoi je suis de poster cette question
Il ne fonctionne pas.. j'ai besoin d'aide de toute urgence..
OriginalL'auteur roa3 | 2009-02-13
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire soit un, mais la DANS la requête est beaucoup plus efficace à cette fin pour les grosses requêtes. J'ai fait quelques tests simples il y a longtemps que révélé qu'il est environ 10 fois plus rapide à utiliser le construire pour cela. Si vous vous demandez si la syntaxe est correcte, alors oui, il semble bien, d'autres de manquer des points-virgules pour compléter l'énoncé.
MODIFIER: Il semble que la question réelle vous demandez "pourquoi faire ces requêtes ne renvoient une valeur". Eh bien, en regardant l'exemple de code que vous avez posté, le problème est ici:
Vous avez besoin pour parcourir et itérer jusqu'à ce qu'il n'y a pas plus de résultats pour être lues, comme Pax a souligné. Voir le manuel PHP page pour mysql_fetch_assoc:
OriginalL'auteur Jay
Oui, les deux personnes doivent travailler très bien. Quel est le problème réel que vous avez vu?
Si, comme vous le dites, un seul enregistrement est retourné, essayez:
et vérifiez la sortie complète pour s'assurer vous avoir des entrées pour 001, 012, 103 et 500.
Si les deux ces requêtes ne renvoient une ligne, je soupçonne pas.
Si elles existent, consultez le tableau des définitions, il se peut que la colonne est de type CHAR(4) et contient des espaces pour les autres. Vous pouvez avoir véritablement trouvé un bug dans MySQL mais j'en doute.
Après EDIT:
C'est un perl/mysql problème, pas un SQL:
mysql_fetch_array()
retourne un seul ligne de l'ensemble de données à un moment et avances un pointeur vers la prochaine.Vous avez besoin de faire quelque chose comme:
Bon, alors c'est probablement le nombre de lignes avec ceux item_id. Ne 012, 103 et 500 exister dans la table?
Faire un "SELECT item_name à partir des éléments de commande par item_id" et cochez la case.
tous les id existe dans la base de données
OriginalL'auteur paxdiablo
Votre champ ID doit être réglé sur auto incrément, je suppose. j'ai eu des problèmes avec ça une fois et j'ai changé l'incrément automatique int. dans le DANS le champ si vous passez les paramètres pour correspondre à l'encontre de l'auto incrémenter la variable que vous obtenez en retour seul le premier paramètre, le reste génère une erreur.
OriginalL'auteur Tanmay
Utilisation
mysql_fetch_assoc
pour obtenir la requête et assignation des valeurs demysql_fetch_assoc
de la requête dans un tableau. SimpleOriginalL'auteur Khalid
Vous pouvez également utiliser la fonction mysql_num_rows pour vous indiquer le nombre de lignes de votre requête récupérés et ensuite utiliser ce résultat pour incrémenter d'une boucle for. Un exemple.
OriginalL'auteur user1457304