Как я могу ограничить результат подзапроса в MySQL? - PullRequest
1 голос
/ 08 сентября 2010

Есть ли способ ограничения результата подзапроса?То, чего я пытаюсь достичь, можно объяснить следующим запросом:

SELECT *
FROM product p
JOIN (
    SELECT price
    FROM supplierPrices sp
    ORDER BY price ASC
    LIMIT 1
) ON (p.product_id = sp.product_id)

Идея состоит в том, чтобы получить только самую низкую цену для конкретного продукта из таблицы, в которой были все данные о ценах.в этом.LIMIT 1 ограничивает весь набор результатов, тогда как исключение приведет к тому, что для каждой цены будет возвращена строка с дублированными данными о продукте.Я пробовал GROUP BY price, но безрезультатно.

После того, как лимит сработает, мне нужно также применить IFNULL, чтобы при отсутствии цены для любого поставщика он мог вернуть предоставленную строку, например, «n / a», а не NULL.Я предполагаю, что это просто означало бы изменение SELECT, как показано ниже, и изменение JOIN на LEFT JOIN?

SELECT *, IFNULL(price,'n/a')

1 Ответ

2 голосов
/ 08 сентября 2010

Просто немного расшифруем ответ Wolfy, имея в виду, что это не проверено:

SELECT *
FROM product p
LEFT JOIN (
    SELECT product_id, MIN(price)
    FROM supplierPrices sp
    GROUP BY product_id
) x ON (p.product_id = x.product_id)

И, как вы говорите, нужно просто выполнить IFNULL для этого столбца, чтобы заменить егос чем-то разумным.

...