如何选择特定用户尚未购买的所有插件或是不再有效? 假设的currentdate是2017年3月2日十七时00分00秒MySql Left加入记录,其中为null,处理validUntil Row
表1(用户):
+-----------+----------+
| id | username |
+-----------+----------+
| 1 | Walter |
| 2 | Hank |
| 3 | John |
+-----------+----------+
表2(buyLog):
+-----------+----------+------------+---------------------+
| id | idUsers | idItems | validUntil |
+-----------+----------+------------+---------------------+
| 1 | 1 | 1 | 2016-03-02 14:15:47 |
| 2 | 1 | 1 | 2018-03-02 14:15:47 |
| 3 | 1 | 2 | 2016-03-02 14:15:47 |
| 4 | 2 | 1 | 2018-03-02 14:15:47 |
+-----------+----------+------------+---------------------+
表3(插件):
+-----------+----------+
| id | name |
+-----------+----------+
| 1 | Foo |
| 2 | Bar |
| 3 | Lorem |
+-----------+----------+
ID为1的用户的预期输出应为:
+-----------+----------+
| id | name |
+-----------+----------+
| 2 | Bar |
| 3 | Lorem |
+-----------+----------+
请参阅SQL小提琴这里:http://sqlfiddle.com/#!9/16356
在那里我有最多的问题是处理validUntil在leftJoin。 我想我必须在左连接期间进行分组才能踩到最近的validUntil记录。也许使用max(validUntil)?
参见:http://sqlfiddle.com/#!9/16356 – Deltahost