Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como selecionar vários registros (linha) de uma coluna no mysql?


Você pode fazer qualquer um, mas a consulta IN é muito mais eficiente para essa finalidade para consultas grandes. Eu fiz alguns testes simples há muito tempo que revelaram que é cerca de 10 vezes mais rápido usar a construção IN para isso. Se você está perguntando se a sintaxe está correta, sim, parece bom, exceto o ponto-e-vírgula faltando para completar a instrução.

EDITAR :parece que a pergunta real que você estava perguntando era "por que essas consultas retornam apenas um valor". Bem, olhando para o código de exemplo que você postou, o problema está aqui:
$fetch = mysql_fetch_assoc($result) or die (mysql_error());
$itemsCollected = $fetch['item_name'];
echo $itemsCollected;

Você precisa percorrer e iterar até que não haja mais resultados a serem buscados, como Pax apontou . Veja a página de manual do PHP para 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);