DataTable permite realizar una ordenación por el número de columna, pero no coincide exactamente con el resultado de la consulta en base de datos, para que DataTable pinte los resultados tal y como llegan de la consulta
para hacer esto solo es necesario añadir la opción que elimina el orden "order: []",
ipt> $(document).ready(function() { $('#example').DataTable( { dom: 'Bfrtip', language: {"url": "/js/datatables/i18n/Spanish.json" }, pageLength: -1, lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "Todos"]], buttons: [ 'pageLength','csv', 'excel' ], order: [], initComplete: function () { this.api().columns().every(function () { var column = this; var select = $('<select><option value=""></option></select>') .appendTo($(column.footer()).empty()) .on('change', function () { var val = $.fn.dataTable.util.escapeRegex( $(this).val() ); column .search(val ? '^' + val + '$' : '', true, false) .draw(); }); column.data().unique().sort().each(function (d, j) { var texto = "" if (d === null) { txtTexto = d; } else { txtTexto = d.replace(/<a\b[^>]*>(.*?)<\/a>/i, "$1"); } select.append('<option value="' + txtTexto + '">' + txtTexto + '</option>') //select.append( '<option value="'+d+'">'+d+'</option>' ) }); }); } } ); } );