Да, оба должны работать нормально. Какую реальную проблему вы видите?
Если, как вы говорите, возвращается только одна запись, попробуйте:
select item_name from items order by item_id
и проверьте полный вывод, чтобы убедиться, что у вас есть записи для 001, 012, 103 и 500.
Если оба , то эти запросы возвращают только одну строку, я подозреваю, что нет.
Если все они существуют, проверьте определения таблиц, возможно, столбец CHAR (4) и содержит пробелы для остальных. Возможно, вы действительно нашли ошибку в MySQL, но я в этом сомневаюсь.
После РЕДАКТИРОВАНИЯ:
Это проблема perl / mysql, а не SQL: mysql_fetch_array()
возвращает только одну строку набора данных за раз и переводит указатель на следующую.
Вам нужно сделать что-то вроде:
$query = "SELECT item_name from items WHERE item_id IN('s001','a012')";
$result = mysql_query($query, $conn) or die (mysql_error());
if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}
while ($row = mysql_fetch_assoc($result)) {
echo $row["item_name"];
}