小编sti*_*tiq的帖子

根据具有多个连接的最新日期选择行

我有这个查询(SQLFiddle):

SELECT
c.name,
a.user_id,
a.status_id,
a.title,
a.rtime,
u.user_name,
s.status_name

FROM company c

LEFT JOIN action a ON a.company_id=c.id
LEFT JOIN user u ON u.id=a.user_id
LEFT JOIN status s ON s.id=a.status_id



WHERE u.user_name='Morgan'

-- WHERE c.name='Fiddle'

GROUP BY c.id

HAVING a.rtime IS NULL OR a.rtime = (
 SELECT max(rtime)
 FROM action a2
 WHERE deleted IS NULL
 AND a2.company_id = c.id
 )
Run Code Online (Sandbox Code Playgroud)

问题一

我想列出所有公司,并显示他们上次对公司采取行动的用户和状态。同时显示没有采取任何行动的公司。

问题二

我还需要能够按名称搜索用户,从而选择该用户最近进行过活动的所有公司。查询是从表单中生成的,因此我可以注入变量。


我目前无法更改数据库 SCHEMA,但对未来迁移的建议非常有用。

我试过将它绑定在一起,INNER JOIN ( SELECT.. ) t ON但我无法理解它。

我也尝试过这里、 …

mysql group-by

8
推荐指数
1
解决办法
7万
查看次数

用来自 csv 的数据替换 MySQL 表

我有一个大约 200 MB/1 轧机行的 CSV 文件,每晚都会更新。我需要这个文件中的值在 MySQL 表中可用。

我通过使用LOAD DATA INFILE filepath REPLACE INTO TABLE tablename. 这很快,它保留了我的索引。问题是不再在 csv 中的值不会被删除。

另一个尝试是到TRUNCATE桌子上,然后是LOAD DATA INFILE filepath INSERT INTO TABLE tablename之后。这似乎快了大约 25%。但是通过这样做,我在索引被禁用(?)或停止工作时遇到了很多麻烦。我已经阅读 MySQL 文档和 SO 好几天了,但我无法弄清楚。

我的下一次尝试与第一次类似。我添加了一列“更新”,并update=0REPLACE INTO使用 a之前将每一行设置为SET update=1,然后使用 删除所有剩余的行update=0这是我目前的方法。

我的问题是:哪种方法被认为更适合用来自 csv 的信息完全替换表,但保留/刷新索引。我很感激有关该主题的任何建议。

我正在使用 MyISAM 引擎。

mysql

6
推荐指数
1
解决办法
2905
查看次数

标签 统计

mysql ×2

group-by ×1