我有以下查询:
SELECT
items.*
FROM
`items`
INNER JOIN
`users` ON `items`.`owner` = `users`.`id`
GROUP BY
`items`.`owner`
LIMIT
10
我确保它按用户分组(每个用户只能获取一个项目),但我也希望确保类别为“1”的项目只显示一次。
但这不起作用。好吧,查询成功,但它没有按类别分组。仍会显示多个类别。有什么想法吗?
我在这里创建了一个SQLFiddle:http://sqlfiddle.com/#!2/0a4bad/1
而不是输出:
+----+----------+-------+
| ID | CATEGORY | OWNER |
+----+----------+-------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 4 |
| 5 | 2 | 5 |
+----+----------+-------+
应输出:
+----+----------+-------+
| ID | CATEGORY | OWNER |
+----+----------+-------+
| 1 | 1 | 1 |
| 4 | 2 | 2 |
| 5 | 2 | 4 |
| 5 | 2 | 5 |
| 8 | 3 | 3 |
+----+----------+-------+
(通知类别1仅显示为ONCE)。
我想确保每个所有者只显示一个项目,然后可以确保特定类别(比如1和5)只显示一次。第1类和第5类人口过多,如果不受限制,它们将占产出的90%。
答案 0 :(得分:0)
您可以使用DISTINCT检索唯一数据:
SELECT DISTINCT items.category
答案 1 :(得分:0)
select * from items t1
where category not in (1,2)
or not exists (
select 1 from items t2
where t2.id < t1.id
and t2.category = t1.category
)
group by owner