如何在连接表中按最近值排序行

时间:2014-05-05 21:17:04

标签: sql

我有$ my_average = 2.5,我想显示最接近这个值的4行。 我的意思是在这种情况下 row_id 12,13和15,16

f.e

row_id  srednia wydział uid
1       -100     *       12
...      ...     ...    ...
12       -10     *        1
13       -2      *      111
14       2.5     *      107
15       4.4     *      109
16       82      *       87
17       -3      *      114
...      ...    ...     ...
200      100     *      116

问题是我的表是从其他表连接的:(在这个查询中我是否可以命令列srednia获取最接近$ my_average = 2.5的值?

SELECT t1.średnia AS srednia, t2.field_5_value AS wydział, t4.uid
FROM preferencje t1
JOIN node t4 ON t1.entity_id = t4.nid
JOIN field_data_field_5 t2 ON t2.entity_id = t1.entity_id

1 个答案:

答案 0 :(得分:0)

我认为这就是你想要的:

SELECT t1.średnia AS srednia, t2.field_5_value AS wydział, t4.uid
FROM preferencje t1 JOIN
     node t4
     ON t1.entity_id = t4.nid JOIN
     field_data_field_5 t2
     ON t2.entity_id = t1.entity_id
ORDER BY abs(srednia - 2.5)
LIMIT 4;

唯一的问题是LIMIT 4。这因数据库而异。它可以是TOP 4子句中的SELECT。或FETCH FIRST 4 ROWS ONLY。甚至是别的东西。