将SQL结果前置到另一个SQL结果?

I have two SQL requests:

$priority = $db->prepare("
    SELECT *
        FROM products
        WHERE datelive = -1
");
$priority->execute();
$catalogue = $db->prepare("
    SELECT *
        FROM products
        WHERE hidden = 0
        AND datelive != -1
        ORDER BY numbought DESC
");
$catalogue->execute();

I previously only had the second query, and it would display product inventory sorted by number of units sold, but excluding hidden items and items of datelive = -1. datelive = -1 is reserved for items of high priority and should appear in front, hence the first query.

How would I achieve the outcome of displaying the contents of the first query and then the second query, but without repeating the code that would display it twice? I'd like to append the first SQL result to the front of the second SQL result, so I can then display it all with one code block.

$prio = $priority->fetchAll(PDO::FETCH_ASSOC);
$cata = $catalogue->fetchAll(PDO::FETCH_ASSOC);
for ($j = 1; $j < $priority->rowCount()+1; $j++) {
    echo $prio[$j-1]['price'];
    echo $prio[$j-1]['name'];
    echo $prio[$j-1]['size'];
}
for ($i = 1; $i < $catalogue->rowCount()+1; $i++) {
    echo $cata[$i-1]['price'];
    echo $cata[$i-1]['name'];
    echo $cata[$i-1]['size'];
}

You can see how ugly this looks. Pseudocode below is what I'd like to do:

append_to_front($catalogue, $priority); // adds $priority to front of $catalogue
$cata = $catalogue->fetchAll(PDO::FETCH_ASSOC);
for ($i = 1; $i < $catalogue->rowCount()+1; $i++) {
    echo $cata[$i-1]['price'];
    echo $cata[$i-1]['name'];
    echo $cata[$i-1]['size'];
}

Something similar to array_unshift but for SQL objects?

Why not just do it in one query? You can do it like this...

SELECT *
    FROM products
    WHERE hidden = 0
    ORDER BY CASE WHEN datelive = -1 THEN 999999 ELSE numbought END DESC

The way this works is by tricking the query into placing all rows with datelive = -1 first by assigning it an arbitrary number of sales of 999999 (only for the ordering part; it will have nothing to do with the actual results of the query). Since the database will be ordering the results descending, 999999 (hence datelive = -1) will appear first.