我有两张桌子:用户&平衡。
我希望使用来自用户表的所有详细信息(所有元组的所有字段)连接表,其中包含余额表中的最新条目(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.*, b.balance, b.date FROM users u, balance b WHERE u.id = b.userId GROUP BY u.id;
我尝试了很多不同的查询,似乎越来越接近,但我无法到达我想去的地方。
任何帮助都将不胜感激。
答案 0 :(得分:20)
您可以使用您为所有用户编写的第一个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);
这可能不是获得结果的最快方式,但它会为您提供所需。我在我的应用程序中的很多地方使用了类似的查询。