Я прошу прощения, если я не могу объяснить это заранее, но я сделаю все возможное.
У меня есть таблица SQL. В таблице есть несколько столбцов. Один из которых помечен как «meta_key», а другой как «meta_value». Я хотел бы знать, как написать SQL, который будет извлекать определенные строки в одном столбце, а также собирать данные из другого столбца в той же строке и разделять все это в свои собственные столбцы. (Пожалуйста, прости меня, если это не имеет смысла.)
Я попробовал следующее, предоставленное другом:
SELECT meta_key, meta_value
FROM wp_gf_entry_meta
WHERE meta_key = 3 OR meta_key = 9 OR meta_key = 22 OR meta_key = 23
Но это только приводит меня к полпути, поскольку он предоставляет все данные из этих строк и столбцов и объединяет их в один столбец.
Опять же, SQL, который был опробован, был:
SELECT meta_key, meta_value
FROM wp_gf_entry_meta
WHERE meta_key = 3 OR meta_key = 9 OR meta_key = 22 OR meta_key = 23
Я не получил сообщений об ошибках выше, но это не обеспечило желаемый результат.
Вот скриншот таблицы перед SQL выше:


А вот скриншот после:
UPDATE
Я добился определенного прогресса. Я считаю, что я могу использовать то, что они называют «Агрегатной функцией».
Это приблизило меня к цели:
SELECT
max(case when meta_key = 3 then meta_value end) Ticker,
max(case when meta_key = 9 then meta_value end) Reason,
max(case when meta_key = 22 then meta_value end) Resistance,
max(case when meta_key = 23 then meta_value end) Support
from wp_gf_entry_meta
Единственная проблема сейчас в том, что он возвращает только одну строку, и я не уверен, как заставить его возвращать более одной строки.