sql >> Databáze >  >> RDS >> Mysql

Jak vybrat více záznamů (řádek) ze sloupce v mysql?

Můžete udělat obojí, ale dotaz IN je pro tento účel mnohem efektivnější pro jakékoli velké dotazy. Dávno jsem provedl nějaké jednoduché testování, které odhalilo, že je k tomu asi 10krát rychlejší použít konstrukci IN. Pokud se ptáte, zda je syntaxe správná, pak ano, vypadá to dobře, kromě chybějících středníků k dokončení příkazu.

UPRAVIT :Vypadá to, že skutečná otázka, kterou jste se ptali, byla „proč tyto dotazy vracejí pouze jednu hodnotu“. Když se podíváte na ukázkový kód, který jste zaslali, problém je zde:

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

Musíte procházet a opakovat, dokud nebudou k dispozici žádné další výsledky k načtení, jak je uvedeno Pax upozornil . Viz manuálovou stránku PHP pro 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);


  1. Mysql:přidání cizího klíče nedává varování/chybu v tabulkách MyISAM

  2. zastavení při chybě kompilace ve skriptu sqlplus

  3. Jak volat uloženou proceduru v JDBC

  4. Jak SOUNDEX() funguje v MariaDB