我有2张 table :用户和余额。
我想将表与用户表(所有元组的所有字段)中的所有详细信息与余额表(由用户ID链接的1个字段)中的最新条目结合在一起。
这是表的结构:
平衡:

+---------+
| 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.*, b.balance, b.date
FROM users u, balance b
WHERE u.id = b.userId GROUP BY u.id;
我尝试了许多不同的查询,而且似乎越来越接近,但是我无法到达想要的位置。
任何帮助,将不胜感激。

最佳答案

您可以对所有用户使用编写的第一个SQL:

SELECT u.*, b.balance, 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);

这可能不是获得结果的最快方法,但是它将为您提供所需的东西。我在应用程序的很多地方都使用了类似的查询。

关于mysql - MySQL-联接2个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10230438/

10-12 21:28