Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie wähle ich mehrere Datensätze (Zeile) aus einer Spalte in MySQL aus?

Sie können beides tun, aber die IN-Abfrage ist für diesen Zweck bei großen Abfragen viel effizienter. Ich habe vor langer Zeit einige einfache Tests durchgeführt, die gezeigt haben, dass es etwa 10-mal schneller ist, das IN-Konstrukt dafür zu verwenden. Wenn Sie fragen, ob die Syntax korrekt ist, dann ja, es sieht gut aus, abgesehen von fehlenden Semikolons, um die Anweisung zu vervollständigen.

BEARBEITEN :Es sieht so aus, als ob die eigentliche Frage, die Sie gestellt haben, lautete:"Warum geben diese Abfragen nur einen Wert zurück?". Wenn Sie sich den Beispielcode ansehen, den Sie gepostet haben, liegt das Problem hier:

$fetch = mysql_fetch_assoc($result) or die (mysql_error());
$itemsCollected = $fetch['item_name'];
echo $itemsCollected;

Sie müssen durchlaufen und iterieren, bis keine Ergebnisse mehr abgerufen werden können, wie Pax wies darauf hin . Siehe die PHP-Handbuchseite für mysql_fetch_assoc :

$sql = "SELECT item_name from items WHERE item_id IN('s001','a012')";
$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    exit;
}

// While a row of data exists, put that row in $row as an associative array
// Note: If you're expecting just one row, no need to use a loop
// Note: If you put extract($row); inside the following loop, you'll
//       then create $userid, $fullname, and $userstatus
while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"];
    echo $row["fullname"];
    echo $row["userstatus"];
}

mysql_free_result($result);