小编典典

MySQL单条语句合并两个表

sql

我敢肯定这已经被询问/回答了,但是我不知道这种动作是如何被调用的,并且我的SQL知识是有限的。

我正在搜索一个SQL语句来合并两个表:

表USER:

ID   hash
=========
1    abc
2    def
3    ghi

和USER_FIELD表:

ID  user_id key        value
=============================
1   1       firstname  John
2   1       lastname   Doe
3   2       firstname  Justin
4   2       lastname   Case

现在,我想知道我如何获得这种观点:

ID  hash  firstname   lastname
================================
1   abc   John        Doe

因此,如果我使用键“ email”在USER_FIELD表中添加其他条目,则会在最后一个结果中得到一个新列

这是否仅在MySQL中是可能的,还是我必须去更改PHP中的结果?

这甚至是一个好的数据库设计,还是我应该放弃另一个(哪个?)去做呢?


阅读 194

收藏
2021-04-14

共1个答案

小编典典

几个Joins可以解决问题。

SELECT u.id, u.hash, uf_f.value AS firstname, uf_l.value AS lastname
FROM user AS u 
LEFT JOIN user_field AS uf_f ON uf_f.user_id = u.id AND uf_f.key = 'firstname'
LEFT JOIN user_field AS uf_l ON uf_l.user_id = u.id AND uf_l.key = 'lastname'
2021-04-14