以上所有查询都不能完全满足您的需求。在不编写新查询的情况下,最好的方法是多次运行我发布的第一个查询。为每个自定义字段运行一次。将字段名称输入查询的 field_name 输入中。我指的是这个查询:
--[params]
-- string :field_name
WITH ucf_name AS(
SELECT
CONCAT('user_field_', id) AS name
FROM user_fields
WHERE name = :field_name
)
SELECT
u.id AS user_id,
ucf.value
FROM users u
JOIN user_custom_fields ucf
ON ucf.user_id = u.id
WHERE ucf.name = (SELECT name FROM ucf_name)