0

我有一个难题。我正在使用一个 CMS,它创建一个数据库表,其中记录填充如下:

+------------+----------------+
| field_name |  field_value   |
+------------+----------------+
| your-name  | Adam           |
| your-email | adam@email.com |
| your-name  | Ben            |
| your-email | en@email.com   |
+------------+----------------+

其中 field_name 和 field_value 是列名。此外,“您的姓名”和“您的电子邮件”是网页中表单的输入名称。

(还有其他列,但它们都没有唯一的行条目)

我的问题是,我如何创建一个表或视图,以便我可以从上表中得到这个?

+-----------+----------------+
| your-name |   your-email   |
+-----------+----------------+
| Adam      | Adam@email.com |
| Ben       | Ben@email.com  |
+-----------+----------------+

我曾考虑过创建视图并加入它们,但我似乎无法让它发挥作用。

任何想法如何实现这一点?

谢谢!

4

2 回答 2

0

你的桌子上有身份证吗?如果你有,你可以使用这个:

SELECT
  MAX(CASE WHEN field_name='your-name' THEN field_value END) your_name,
  MAX(CASE WHEN field_name='your-email' THEN field_value END) your_email
FROM
  yourtable
GROUP BY
  id

在此处查看小提琴。

于 2013-04-30T22:28:25.817 回答
0

您的表 1 是否没有像这样的 id 列(因此 (id, field_name) 是该表的主键)?

+----+------------+----------------+
| id | field_name |  field_value   |
+----+------------+----------------+
| 1  | your-name  | Adam           |
| 1  | your-email | adam@email.com |
| 2  | your-name  | Ben            |
| 2  | your-email | en@email.com   |
+----+------------+----------------+

那你可以做...

SELECT DISTINCT myTableAlias.id,
    (SELECT field_value FROM table
     WHERE id=myTableAlias.id AND field_name = 'your-name') your-name,
    (SELECT field_value FROM table
     WHERE id=myTableAlias.id AND field_name = 'your-email') your-email,
FROM table myTableAlias
于 2013-04-30T22:32:22.807 回答