【发布时间】:2018-08-20 15:18:44
【问题描述】:
我正在使用 mysql,我有两个表格,格式如下:
用户:
user_id - user_name - 电话用户元:
user_meta_id - user_id - meta_key - meta_value - meta_date
我有一些记录如下:
user_id: 23
meta_key: gender
meta_value: male
meta_date: 1534533650
user_id: 23
meta_key: city
meta_value: london
meta_date: 1534533650
user_id: 23
meta_key: name
meta_value: jack
meta_date: 1534533650
user_id: 25
meta_key: name
meta_value: Jamie
meta_date: 1534593881
user_id: 25
meta_key: gender
meta_value: male
meta_date: 1534593881
user_id: 23
meta_key: gender
meta_value: female
meta_date: 1534595971
user_id: 23
meta_key: city
meta_value: liverpool
meta_date: 1534595971
And ...
我需要获取所有已注册最新更改的用户信息(user_id = 23),例如:
user_id: 23
meta_key: name
meta_value: Jamie
meta_date: 1534533650
user_id: 23
meta_key: city
meta_value: liverpool
meta_date: 1534595971
user_id: 23
meta_key: gender
meta_value: female
meta_date: 1534595971
此操作的查询很复杂,我很困惑,请帮助我,
我使用了这个但没有得到正确的结果:
"SELECT kmu.*
FROM user_meta kmu
INNER JOIN
(SELECT `meta_key`, `meta_value`, MAX(`meta_date`) AS MaxDateTime
FROM user_meta
GROUP BY meta_key) groupedtt
ON user_id=:id
AND kmu.meta_key = groupedtt.meta_key
AND kmu.meta_date = groupedtt.MaxDateTime";
【问题讨论】:
-
为什么不在 group by 子句中使用
meta_value。 -
@Ankit-bajpai 输出没有区别(按 meta_key 分组 = 按 meta_value 分组)。你能指导我更多吗?
-
对您来说最新的变化是什么?最后 3 个 id 取决于他们的
meta_date? -
慰问 - 您已经结合了多种“复杂”设计模式(EAV、历史等);查询复杂性将比比皆是,性能将受到影响。如果您计划拥有超过几千个“用户”,您将看到性能问题。
-
@Rick James 谢谢,您还会在 WordPress 中看到相同的功能,而且一切看起来都不错,那么有什么区别?
标签: mysql sql entity-attribute-value