从一个具有多个条件的表中选择行

时间:2019-07-19 16:05:08

标签: mysql select

请帮助我的sql查询。

我有一个数据库表,我需要查询它,但需要满足条件。请查看下面的示例数据:

<table>
<tr><td>id</td><td>user_id</td><td>post_id</td><td>objective_id</td><td>created</td></tr>
<tr><td>1</td><td>1</td><td>41</td><td>1</td><td>2019-07-19 13:01:25</td></tr>
<tr><td>2</td><td>1</td><td>41</td><td>2</td><td>2019-07-19 13:15:39</td></tr>
<tr><td>3</td><td>1</td><td>41</td><td>4</td><td>2019-07-19 13:15:41</td></tr>
<tr><td>4</td><td>2</td><td>41</td><td>1</td><td>2019-07-19 13:01:25</td></tr>
<tr><td>5</td><td>2</td><td>41</td><td>2</td><td>2019-07-19 13:15:39</td></tr>
<tr><td>6</td><td>2</td><td>41</td><td>4</td><td>2019-07-19 13:15:41</td></tr>
<tr><td>7</td><td>3</td><td>41</td><td>1</td><td>2019-07-19 13:01:25</td></tr>
<tr><td>8</td><td>3</td><td>41</td><td>2</td><td>2019-07-19 13:15:39</td></tr>
<tr><td>9</td><td>3</td><td>41</td><td>4</td><td>2019-07-19 13:15:41</td></tr>
<tr><td>10</td><td>4</td><td>41</td><td>1</td><td>2019-07-19 13:01:25</td></tr>
<tr><td>11</td><td>4</td><td>41</td><td>2</td><td>2019-07-19 13:15:39</td></tr>
<tr><td>12</td><td>4</td><td>41</td><td>4</td><td>2019-07-19 13:15:41</td></tr>
</table>

我需要选择特定post_id中的所有用户,但仅选择其Objective_id为最高值的条目。 我能够做到这一点,但我还需要一个条件。每个目标只有2个用户。按ID DESC排序。

所以结果应该是:

<table>
<tr><td>id</td><td>user_id</td><td>post_id</td><td>objective_id</td><td>created</td></tr>
<tr><td>9</td><td>3</td><td>41</td><td>4</td><td>2019-07-19 13:15:41</td></tr>
<tr><td>12</td><td>4</td><td>41</td><td>4</td><td>2019-07-19 13:15:41</td></tr>
</table>

这是我使用的查询:

SELECT id, user_id, objective_id, created 
        FROM my_table as t1
        WHERE t1.id = (SELECT t2.id
            FROM my_table t2
            WHERE t2.user_id = t1.user_id AND t2.post_id = 41 ORDER BY t2.objective_id DESC limit 1) 

我得到的结果是:

<table>
<tr><td>id</td><td>user_id</td><td>post_id</td><td>objective_id</td><td>created</td></tr>
<tr><td>3</td><td>1</td><td>41</td><td>4</td><td>2019-07-19 13:15:41</td></tr>
<tr><td>6</td><td>2</td><td>41</td><td>4</td><td>2019-07-19 13:15:41</td></tr>
<tr><td>9</td><td>3</td><td>41</td><td>4</td><td>2019-07-19 13:15:41</td></tr>
<tr><td>12</td><td>4</td><td>41</td><td>4</td><td>2019-07-19 13:15:41</td></tr>
</table>

这是唯一的挑战:每个Objective_id的最大用户数为2。

0 个答案:

没有答案