加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL – 加入2个表

发布时间:2020-12-11 23:54:06 所属栏目:MySql教程 来源:网络整理
导读:我有2个表:用户和平衡. 我希望使用来自用户表的所有详细信息(所有元组的所有字段)连接表,其中包含余额表中的最新条目(1个字段由用户ID链接). 这是表格的结构: 平衡: +---------+| Field |+---------+| dbid || userId || date || balance |+---------+ 用

我有2个表:用户和&平衡.

我希望使用来自用户表的所有详细信息(所有元组的所有字段)连接表,其中包含余额表中的最新条目(1个字段由用户ID链接).

这是表格的结构:

平衡:

+---------+
| Field   |
+---------+
| dbid    |
| userId  |
| date    |
| balance |
+---------+

用户:

+-------------+
| Field       |
+-------------+
| dbid        |
| id          |
| fName       |
| sName       |
| schedName   |
| flexiLeave  |
| clockStatus |
+-------------+

我已经尝试了几个小时来做??这个,我能得到的最接近的是为一个用户返回一行:

SELECT u.*,b.balance,b.date FROM users u,balance b WHERE u.id = b.userId AND b.date = (SELECT MAX(date) FROM balance WHERE userId = 'A8126982');

或者我可以选择所有用户,但不能选择余额表中的最新条目:

SELECT u.*,balance b WHERE u.id = b.userId GROUP BY u.id;

我尝试了很多不同的查询,似乎越来越接近,但我无法达到我想要的目标.

任何帮助,将不胜感激.

最佳答案 您可以使用您编写的第一个SQL,但适用于所有用户:

SELECT u.*,b.date
FROM users u JOIN balance b ON u.id = b.userId
WHERE b.date = (SELECT MAX(date) FROM balance WHERE userId = u.id);

这可能不是获得结果的最快方式,但它会为您提供所需.我在我的应用程序中的很多地方使用类似的查询.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读