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: []", 

 documentación datatables

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>' )
            });
          });
        }

    } );
} );