MySQL table 当其他列具有特定值时按一列排序
MySQL table order by one column when other column has a particular value
我有两个mysqltablerecord_items, property_values 具有以下结构。
table : property_values (column REC is foreign key to record_items)
id(PK)|REC(FK)| property | value|
1 | 1 | name | A |
2 | 1 | age | 10 |
3 | 2 | name | B |
4 | 3 | name | C |
5 | 3 | age | 9 |
table: record_items
id(PK) |col1|col2 |col3|
1 | v11| v12 | v13|
2 | v21| v22 | v23|
3 | v31| v32 | v33|
4 | v41| v42 | v43|
5 | v51| v52 | v53|
record_items table 仅包含有关记录的基本信息,而 property_values table 将 record_item 作为外键,每个 属性 并且它的值保存在单独的行中。
现在我想根据特定的 属性 对 record_items 进行排序,比如按年龄排序。
我的 HQL 查询类似于
Select distinct rec from PropertyValues where property="age" order by value;
但是此查询将跳过记录 2,因为它没有 属性 年龄的条目。
我希望结果包含按排序顺序包含年龄 属性 的记录,并附加那些根本没有年龄 属性 的记录。我该如何查询?
这是一个原始的 MySQL 查询,应该可以解决问题:
SELECT t1.*
FROM record_items t1
LEFT JOIN property_values t2
ON t1.id = t2.REC AND
t2.property = 'age'
ORDER BY CASE WHEN t2.value IS NULL THEN 1 ELSE 0 END, t2.Value
我注意到 property_values
中的 Value
列混合了数字和文本数据。这不能很好地用于排序目的。
我有两个mysqltablerecord_items, property_values 具有以下结构。
table : property_values (column REC is foreign key to record_items)
id(PK)|REC(FK)| property | value|
1 | 1 | name | A |
2 | 1 | age | 10 |
3 | 2 | name | B |
4 | 3 | name | C |
5 | 3 | age | 9 |
table: record_items
id(PK) |col1|col2 |col3|
1 | v11| v12 | v13|
2 | v21| v22 | v23|
3 | v31| v32 | v33|
4 | v41| v42 | v43|
5 | v51| v52 | v53|
record_items table 仅包含有关记录的基本信息,而 property_values table 将 record_item 作为外键,每个 属性 并且它的值保存在单独的行中。
现在我想根据特定的 属性 对 record_items 进行排序,比如按年龄排序。 我的 HQL 查询类似于
Select distinct rec from PropertyValues where property="age" order by value;
但是此查询将跳过记录 2,因为它没有 属性 年龄的条目。 我希望结果包含按排序顺序包含年龄 属性 的记录,并附加那些根本没有年龄 属性 的记录。我该如何查询?
这是一个原始的 MySQL 查询,应该可以解决问题:
SELECT t1.*
FROM record_items t1
LEFT JOIN property_values t2
ON t1.id = t2.REC AND
t2.property = 'age'
ORDER BY CASE WHEN t2.value IS NULL THEN 1 ELSE 0 END, t2.Value
我注意到 property_values
中的 Value
列混合了数字和文本数据。这不能很好地用于排序目的。