我正在尝试使用ABS()找到类似的房屋,我必须使用一行中的值来输入ABS功能。
我的问题是,我可以一次性而不是两次查询吗?
基本上,我会使用输入房子的ID来检索其数据,然后使用ABS()中的数据来查找类似的房屋。
(如果您有更好的方法来查找类似的项目,请说出来)
修改:
下面是一个我快速切碎的例子,它输出了一些结果但是从快速的看看我把结果看起来似乎不正确(仍在寻找)
SELECT DISTINCT
p.*,
ABS(p2.price - p.price) AS rank_price,
ABS(p2.area_minor - p.area_minor) AS rank_area,
ABS(p2.bedrooms - p.bedrooms) AS rank_bedrooms,
ABS(p2.bathrooms - p.bathrooms) AS rank_bathrooms
FROM
properties AS p
INNER JOIN
properties as p2 ON p2.id = 1
WHERE
p.id != 1
AND p.deleted = 0
GROUP BY
p.id
ORDER BY
rank_bedrooms ASC,
rank_bathrooms ASC,
rank_area ASC,
rank_price ASC
LIMIT 5
编辑2 :
结果似乎没问题 - 我在其他地方解决了问题。如何改进此查询/方法?