PHP PDO выбрать и вывести результат первой найденной строки


После того, как 1 день не нашел правильного направления, я надеюсь, что кто-то может мне помочь.

Чего я хочу, так это: Привязка массива к ПДО выполнить инструкцию. Поэтому я использую утверждение WHERE IN в своей подготовке. Пока все хорошо, моя проблема сейчас в том, что нуммер не уникален. В моей базе данных больше строк с этим значением. Мне нужен способ ограничить запрос первой найденной строкой, где nummer f. e. = 1, а затем перейти к следующему значению массива.

Вот код (я нашел его здесь на stackoverflow ;)

$ids     = array(1, 2, 3, 7, 8, 9);
$inQuery = implode(',', array_fill(0, count($ids), '?'));


$stmt = $objDb->prepare(
    'SELECT *
     FROM table
     WHERE nummer IN(' . $inQuery . ')'  
);

$stmt->execute($ids);

while($row = $stmt->fetch()) {  

        echo $row['name'] . "<br />";
    }  
1 2

1 ответ:

Я полагаю, что вы хотите добавить GROUP BY nummer после вашего предложения WHERE.

$stmt = $objDb->prepare(
  'SELECT *
   FROM table
   WHERE nummer IN(' . $inQuery . ')
   GROUP BY nummer
  '  
);

Edit

Для Postgres попробуйте:

$stmt = $objDb->prepare(
  'SELECT DISTINCT ON (nummer) nummer, *
   FROM table
   WHERE nummer IN(' . $inQuery . ')
  '  
);