【问题标题】:How can I create a view with the last entry in MySQL?如何使用 MySQL 中的最后一个条目创建视图?
【发布时间】:2013-09-19 04:49:45
【问题描述】:

所以,我有一个包含多个用户条目的表,我需要按他们的 ID 分组并检索表中的最后一个寄存器。

为了优化我的工作,我使用查询创建了一个视图,其中一个 SELECT 在另一个内部按时间戳后代排序,但它失败了。我认为它不能通过视图构建或已经有解决方案?

如果有人知道我该怎么做,请分享!

谢谢!

P.S.:对不起,代码如下:

SELECT 
    dg_users.id,
    dg_users.email,
    dg_maps.id,
    dg_maps.latitude,
    dg_maps.longitude,
    dg_maps.timestamp
FROM
    (SELECT 
        *
    FROM
        dg_maps
    ORDER BY dg_maps.timestamp DESC) dg_maps
JOIN
    dg_geologs ON dg_geologs.map_id = dg_maps.id
JOIN
    dg_users ON dg_users.id = dg_geologs.user_id
GROUP BY dg_geologs.user_id;

【问题讨论】:

  • 对不起,我在上面被编辑了。

标签: mysql sql


【解决方案1】:

基于你还没有公布你的表结构,我只能提供一个笼统的答案。 我想说的是,我认为为这样一个小查询创建视图并没有提供那么多优势,除非您列出了here (When to use database views and when not?) 的原因。

要使用最后插入的条目创建视图,您可以执行以下操作:

CREATE VIEW MyView AS
SELECT *
FROM myTable
ORDER BY TIMESTAMP DESC LIMIT 1;

地点:

  • MyView 是您为视图命名的名称
  • myTable 是您的表格
  • timestamp 是带有您的时间戳的字段

你可以这样查询:

select * from MyView;

【讨论】:

  • 我在上面编辑了我的帖子。在这个查询中我必须知道的是每个注册用户的最后一个条目。
  • 如果它与原来的不同,你应该提出一个新问题。
猜你喜欢
  • 2016-08-08
  • 1970-01-01
  • 2018-03-11
  • 2014-06-29
  • 1970-01-01
  • 2014-10-05
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
相关资源
最近更新 更多