使用mySQL中的各种方法进行分组和排序

时间:2020-04-05 12:07:38

标签: mysql

我有一个包含某种元数据信息的表(我认为Wordpress可以做到),例如:

| id  | name | value       | 
| 002 | meta1  | string1-1 |
| 003 | meta1  | string1-2 | 
| 004 | meta2  | ipaddress1 |
| 005 | meta2  | ipaddress2 | 
| 006 | meta2  | ipaddress3 | 
| 007 | meta3  | numerical3-1 |

如您所见,meta1包含字符串值,meta2包含IP地址,meta3包含数字值。查询此表时,我的问题是首先按名称然后按值排序。

如果所有值都是字符串,但对于不同的meta具有不同类型的值,这将不是问题,例如,这需要使用INET_ATON()mySQL函数对meta2进行正确排序。

我的示例是关于字符串与IP地址的示例,但我的问题很笼统,我可能想按DESC顺序而不是ASC顺序对另一个元数据进行排序,等等...

我将所有元数据都放在一个数组中,并且我已经考虑过将其升级为PHP中的关联数组:

    $metas = [
        ['mid' => 'meta1', 'cri' => ''], //string
        ['mid' => 'meta2', 'cri' => 'INET_ATON'], //ip
        ['mid' => 'meta3', 'cri' => ''], //string
    ];

因此,我可以将每个元数据要使用的条件存储在某个地方,空的“ cri”是默认的排序条件。我很高兴地添加了另一个信息,例如“ ord”,其值为“ ASC”或“ DESC” ...

我的问题是关于查询的语法,以实现此目的,为特定名称指定特定的排序方法,像这样,但是所有内容都使用INET_ATON()进行排序。

SELECT * FROM mytable GROUP BY name ORDER BY INET_ATON(value)

如果有人有一个指针,一个主意...谢谢。 (我也尝试使用javascript对结果进行视觉排序,并且有一些关于tablesorter,TinySort等的想法,但是从SQL中获得排序结果似乎更干净。) 谢谢。皮埃尔。

0 个答案:

没有答案