将键数据追加到MySQL表中

时间:2015-11-28 00:55:01

标签: mysql

请原谅我的无知,但是有一种整洁的方法可以自动地将元值(按键设置为临时列)从一个表连接到另一个表吗?

表项目
ID(int) title(varchar 255)
内容(longtext)

表元
ID(int)
item_id(int)
key(varchar 255)
价值(longtext)

理想情况下,我希望能够执行像

这样的通用查询

SELECT * FROM items

并将输出设为

item.ID item.title item.content metakey1 metakey2 1 Listing Title Listing content meta_val1 meta_val2 2 Another Title Listing content meta_val1 meta_val2

2 个答案:

答案 0 :(得分:1)

您可以以XML格式存储数据,并使用MySQL XML Functions提取数据。

示例:

create table items (id int, title varchar(100), content longtext);
create table meta (id int, item_id int, metadata varchar(100));
insert into items values (1, 'test item1', 'some content');
insert into meta values (1, 1, '<key1>value1</key1><key2>value2</key2>');

select 
  i.id, i.title, i.content, 
  extractvalue(m.metadata, '//key1[$1]') as key1, 
  extractvalue(m.metadata, '//key2[$1]') as key2 
from items i 
inner join meta m on i.id = m.item_id;

+------+------------+--------------+--------+--------+
| id   | title      | content      | key1   | key2   |
+------+------------+--------------+--------+--------+
|    1 | test item1 | some content | value1 | value2 |
+------+------------+--------------+--------+--------+

您可以创建名为items_with_metadata的视图,然后调用select * from items_with_metadata以获得所需的输出。

答案 1 :(得分:0)

我真的不明白你想要什么,但听起来像是mysql view行为。

这将允许您使用动态生成的字段创建虚拟表。

解释一下:你创建一个SELECT语句并告诉MySql将它用作表。