繁体   English   中英

MySQL选择列的唯一行条目作为新视图或表中的列

[英]MySQL select unique row entries of a column as columns in a new view or table

我有两难选择。 我正在使用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  |
+-----------+----------------+

我曾考虑过创建视图并加入它们,但似乎无法使其正常工作。

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

谢谢!

表格中有ID吗? 如果有,可以使用以下方法:

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

请看这里的小提琴。

您的表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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM