所以在列country中有两个数据,在json [“AX”,“JP”]中,我想显示国家'JP',因为我的查询是DESC。但是结果显示是“AX”,这是错误的,因为它应该显示“JP”。这是因为在我的查询中我放了$[0],所以不管我的查询中的过滤器是什么,它总是会显示这个json中的第一个元素[“AX”,“JP”],其中'AX'在数组中是0。那么我应该如何修复这个美元部分$[0],这样我就可以过滤我的数据了。
这是护照列的数据,在此护照列中有国家数据
[{"status": 1, "country": "AX", "issued_date": "2022-07-05", "passport_no": "ABS123433NEW3", "expiration_date": "2000-06-07"}, {"status": 1, "country": "JP", "issued_date": "2022-05-01", "passport_no": "TK84773812NEW3", "expiration_date": "-"}]
这是查询
LEFT JOIN (
SELECT
employees.id AS emp_id,
JSON_UNQUOTE(JSON_EXTRACT(employees.passport, '$[0].country')) AS latest_passport_no
FROM
TAL.employees
WHERE
JSON_UNQUOTE(JSON_EXTRACT(employees.passport, '$[0].country')) IS NOT NULL
ORDER BY
JSON_UNQUOTE(JSON_EXTRACT(employees.passport, '$[0].country')) DESC
) AS latest_passports ON EMP.id = latest_passports.emp_id
1条答案
按热度按时间plicqrtu1#
您可以使用
JSON_TABLE
从employee.passport
数据中提取所有country
值。然后可以按降序排序,并返回“最新”值:示例数据的输出:
dbfiddle.uk上的演示