Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql-从左连接获取多个最后结果_Mysql_Left Join - Fatal编程技术网

Mysql-从左连接获取多个最后结果

Mysql-从左连接获取多个最后结果,mysql,left-join,Mysql,Left Join,我为我的英语感到抱歉 我有三张桌子。联系人,联系人属性,联系人值 联系人: ------------------- |id | name | ------------------- |1 | bob | |2 | boby | 联系地址: ------------------- |id | code | ------------------- |1 | email | |2 | sex | 联系单位价值: ---

我为我的英语感到抱歉

我有三张桌子。联系人,联系人属性,联系人值

联系人:

-------------------
|id     | name  |
------------------- 
|1      |  bob  |
|2      |  boby |
联系地址:

-------------------
|id     | code   |
------------------- 
|1      | email  |
|2      | sex    |
联系单位价值:

------------------------------------------------------------------------
|id     | contact_id | attribute_id | creation            | value
------------------------------------------------------------------------
|1      | 1          | 1            | 2014-07-17 12:12:49 | bob@bob.com
|2      | 1          | 2            | 2014-07-17 12:12:56 | Male
|3      | 1          | 2            | 2014-07-17 14:15:58 | Female
现在,我正在寻找一个查询,用于从一个联系人获取所有唯一属性,但最后一个唯一属性除外。查找我的结果查询的方法如下所示:

------------------------------------------
|name |contact_id | attribut_id | value
------------------------------------------
|Bob  |1          | 1           | bob@bob.com
|Bob  |1          | 2           | female
我尝试了以下查询:

SELECT * FROM contact AS c
LEFT JOIN contact_value as v ON c.id = v.contact_id
WHERE c.id = '1'
  AND v.creation IN 
  (SELECT MAX(v2.creation) FROM contact_value AS v2 GROUP BY v2.attribute_id)
但结果是:

------------------------------------------
|name |contact_id | attribut_id | value
------------------------------------------
|Bob  |1          | 1           | bob@bob.com
|Bob  |1          | 2           | male
|Bob  |1          | 2           | female
如果有人知道一个简单的方法来得到我想要的结果? 我简化了表格,使之更具可读性。
感谢您的时间,再次为这糟糕的英语感到抱歉。

您可以对子查询执行联接,该子查询将检索最大创建值以及按联系人id和属性id分组的其他值

诸如此类

select c.name, cv.contact_id, cv.attribute_id, cv.value
from contact c
join contact_value cv on cv.contact_id = c.id
join
    (select max(creation) as maxCreation, contact_id, attribute_id
     from contact_value
     group by contact_id, attribute_id) s
  on cv.contact_id = s.contact_id and 
     cv.attribute_id = s.attribute_id and 
     cv.creation = s.maxCreation
请参见

您也可以在子查询中使用ORDER BY和LIMIT 1:

SELECT c.*,
(
  SELECT v.value
  FROM contact_value AS v
  WHERE v.contact_id = c.id
  ORDER BY v.creation
  LIMIT 1
) AS latest_value
FROM contact AS c
WHERE c.id = '1'
为什么您要将1的_id设置为女性和男性?只是好奇。