0

我正在尝试从表中选择一组行并按一组子查询排序:

SELECT *, 
(SELECT Count(id) > 0 FROM places_users WHERE places_id = places.id) AS verified_bool,
(SELECT Count(id) > 0 FROM places_services WHERE places_id = places.id) AS services_bool
FROM places
ORDER BY sum(verified_bool + services_bool) DESC 
LIMIT 0, 10

但它只返回 1 个结果。子查询检查连接到原始行的其他表。我只需要验证那些其他表至少有 1 个结果,因此我使用布尔值,然后尝试总结子查询 0 或 1,并将原始结果从总和最大的那些排列到最小的那些。

4

1 回答 1

0

问题在于 order by 子句中的总和:

SELECT *, 
(SELECT Count(id) > 0 FROM places_users WHERE places_id = places.id) AS verified_bool,
(SELECT Count(id) > 0 FROM places_services WHERE places_id = places.id) AS services_bool
FROM places
ORDER BY (verified_bool + services_bool) DESC 
LIMIT 0, 10
于 2013-09-25T13:41:56.453 回答