如何通过SQL从特定行中提取数据并将其分成自己的列?

时间:2019-05-16 04:03:58

标签: sql mysqli

很抱歉,如果我无法事先正确解释,我会尽力而为。

我有一个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之前的表格的屏幕截图:

Here is a screenshot of the table before the above SQL:

and afterd

这是之后的屏幕截图:

更新

我已经取得了一些进展。我相信他们所谓的“汇总函数”就是我可以使用的。

这使我更加接近目标:

  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

现在唯一的问题是它只返回一行,而且我不确定如何使它返回多于一行。

1 个答案:

答案 0 :(得分:-1)

尝试一下:

SELECT meta_key, meta_value
FROM wp_gf_entry_meta
WHERE meta_key IN(3, 9, 22,23)