输入表:
onetsoc_code | element_id | scale_id | data_value
11-1011.00 | 2.A.1.a | IM | 4.38
11-1011.00 2.A.1.a LV 4.75
11-1011.00 2.A.1.b IM 4.38
11-1011.00 2.A.1.b LV 4.88
11-1011.00 2.A.1.c IM 4.12
11-1011.00 2.A.1.c LV 4.50
所需的输出表:
onetsoc_code | element_id | data_value
11-1011.00 | 2.A.1.b | 4.88
11-1011.00 | 2.A.1.a | 4.75
11-1011.00 | 2.A.1.c | 4.50
解释:
我有一个表,其中包含由 group_id 引用的 15k 行,然后在 group_id 中引用一个 element_id。我想做一个两部分查询,它为 1 个特定的 element_id 获取某个 group_id 的所有元素,对它们进行排序,然后根据它们在最后一个查询中返回的顺序获取另一个 element_id 的元素。
SELECT element_id, data_value
FROM skills
WHERE element_id
IN(SELECT CAST(group_concat(CONCAT('''', element_id, '''') ORDER BY data_value DESC) as char) FROM `skills` WHERE onetsoc_code = '11-1011.00' AND scale_id = 'IM')
AND onetsoc_code = '11-1011.00'
AND scale_id = 'LV'
我已经尝试了一切,子查询有效(我已经尝试过不带引号,没有强制转换为字符等,它返回了我需要以正确顺序查询的所有 element_id。当我去执行上述查询时,对于一些原因,尽管数据库中有与子查询中的 element_id 对应的条目,但它什么也不返回。
我想要的结果是 onetsoc_code = '11-1011.00' 的所有元素的 data_value 首先按 scale_id 'IM' (重要性)排序,然后根据重要性顺序,上述 onetsoc_code 的所有元素的 data_values 给定 scale_id 'LV' . 我不需要第一个查询中的 data_values,只需要基于 scale_id 'LV' 的第二个查询
我还必须跨多个表“技能”、“能力”等执行此操作,所以我可以优化此查询的任何方式都会非常有帮助!
我强烈怀疑我犯了一个愚蠢的错误。谁能帮我解开这个问题?