CREATE TABLE person_properties (
person_id INT,
key TEXT,
value TEXT,
PRIMARY KEY (person_id, key)
);
CREATE TABLE persons (
id SERIAL PRIMARY KEY
);
我已经这样做了:
INSERT INTO persons DEFAULT_VALUES; -- suppose id is 1
INSERT INTO person_properties (person_id, key, value) VALUES (1, 'age', '30')
INSERT INTO person_properties (person_id, key, value) VALUES (1, 'weight', '20lb')
我想选择以 age
和 weight
作为列的 person
,并使用 person_properties
中的值> (如果不存在则为 NULL
)。我怎样才能做到这一点?
最佳答案
SELECT * FROM persons
LEFT OUTER JOIN person_properties p1 ON persons.person_id = p1.person_id AND p1.key = 'age'
LEFT OUTER JOIN person_properties p2 ON persons.person_id = p2.person_id AND p2.key = 'weight'
关于mysql - 将属性表作为列和值连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24848412/