mysql中特定列的数据排序问题

时间:2016-05-02 07:04:59

标签: mysql mysql-workbench

我有一个表格,其中列名称为mappedcloumnname和fieldname,我的字段列包含address1address2citystatecustomeridcountrymappedcolumn contanins c1-c20。我写了一个查询来根据mappedcolumn名称对我的数据进行排序,但是得到的顺序是错误的

SELECT * FROM customermetadata 
   WHERE OrgID = in_orgid 
   ORDER BY MappedColumnName;

3 个答案:

答案 0 :(得分:0)

如果您的列c1-c20包含来自String(VarChar)的值,那么它将在SQL中被视为oninput,并且数据将无法正确排序。

答案 1 :(得分:0)

你可以尝试一下:

SELECT
    *
FROM
    customermetadata
WHERE
    OrgID = in_orgid
ORDER BY CAST(SUBSTRING(MappedColumnName FROM 2) AS UNSIGNED);

注意:

我已从number中提取MappedColumnName并根据提取的数字对记录进行排序。

我已经创建了一个演示,其中表格只包含两列(idcol)。

col列包含c1,c2,...等值。

如果您仅按col订购,请

See demo

See demo如果您通过从col提取号码进行订购。

答案 2 :(得分:0)

你应该这样试试,

select * from customermetadata 
   where OrgID=in_orgid       
   Order By CAST(SUBSTR(MappedColumnName FROM 2 FOR LENGTH(MappedColumnName)) AS UNSIGNED);   ;

注意:对于相同长度的数字,较长的数字也是一个较大的数字,您可以进行文本比较,因为'0' < '1' .... < '9'它会缩短字母数字顺序。