#mysql #select #count #derived-table
#mysql #выберите #подсчет #производная таблица
Вопрос:
Не мог бы кто-нибудь, пожалуйста, помочь мне объяснить в этом примере, куда пойдет функция SUM? count
Я ссылаюсь не на функцию, а скорее на название столбца в моей таблице. Я пытаюсь получить буквальный подсчет количества возвращенных столбцов
SELECT count, post_id
, DeliveryDate
, DeliveryType
FROM ( SELECT count, post_id
, MAX(CASE WHEN meta_key = 'value_1' THEN meta_value ELSE NULL END) as DeliveryDate
, MAX(CASE WHEN meta_key = 'value_2' THEN meta_value ELSE NULL END) as DeliveryType
FROM wp_postmeta
GROUP
BY post_id
) AS derived_table
WHERE DeliveryDate >= CURRENT_DATE
AND DeliveryType = 'delivery'
Ответ №1:
У меня такое чувство, что вы хотите что-то в этом роде:
SELECT
post_id,
COUNT(*) AS cnt,
MAX(CASE WHEN meta_key = 'value_1' THEN meta_value END) AS DeliveryDate,
MAX(CASE WHEN meta_key = 'value_2' THEN meta_value END) AS DeliveryType
FROM wp_postmeta
GROUP BY
post_id
HAVING
DeliveryDate >= CURRENT_DATE AND
DeliveryType = 'delivery';
Вместо того, чтобы выполнять дополнительный запрос, а затем проверять дату доставки и тип во внешнем WHERE
предложении, мы можем вместо этого просто выполнить единственную агрегацию и утвердить ваши требования в HAVING
предложении, используя псевдонимы, определенные ранее.
Комментарии:
1. Спасибо, к сожалению, это не работает. Я не уверен, почему, но это связано с предложением having. Я удаляю ее, тогда она работает, но автоматически возвращает каждый результат и ничего не учитывает.