【发布时间】:2020-05-05 07:19:25
【问题描述】:
我想用数组对表进行排序。重叠最多的记录应该在顶部。我已经有一个 where 语句来过滤带有数组的记录。使用相同的数组,我想确定排序的重叠数。你知道 order by 语句的样子吗?
我的桌子
SELECT * FROM "nodes"
+-----------+---------------------------+
| name | tags |
+-----------+---------------------------+
| Max | ["foo", "orange", "app"] |
| Peter | ["foo", "bar", "baz"] |
| Maria | ["foo", "bar"] |
| John | ["apple"] |
+-----------+---------------------------+
结果与位置
SELECT * FROM "nodes" WHERE (tags && '{"foo", "bar", "baz"}')
+-----------+---------------------------+
| name | tags |
+-----------+---------------------------+
| Max | ["foo", "orange", "app"] |
| Peter | ["foo", "bar", "baz"] |
| Maria | ["foo", "bar"] |
+-----------+---------------------------+
订单结果
SELECT * FROM "nodes" WHERE (tags && '{"foo", "bar", "baz"}') ORDER BY ????
+-----------+---------------------------+
| name | tags |
+-----------+---------------------------+
| Peter | ["foo", "bar", "baz"] |
| Maria | ["foo", "bar"] |
| Max | ["foo", "orange", "app"] |
+-----------+---------------------------+
【问题讨论】:
标签: sql arrays json postgresql sql-order-by