Creo que hay que regresar al JOIN anterior:
Código PHP:
Ver original$query = "select t_u.*, t_edo.nombre as nestado, t_ciu.nombre as nciudad, t_mun.nombre_municipio as nmunicipio";
$query .= " from t_usuarios t_u";
$query .= " LEFT JOIN t_estados t_edo on t_edo.estado = t_u.estado AND t_edo.ciudad = ''"; // Agregamos ciudad (vacía)
$query .= " LEFT JOIN t_estados t_ciu on t_ciu.ciudad = t_u.ciudad AND t_ciu.estado = t_u.estado"; // Agregamos estado
$query .= " LEFT JOIN t_municipio t_mun on t_mun.municipio = t_u.municipio";
$query .= " where t_u.status='' and (t_u.nombre LIKE '%$q%' OR t_u.matricula LIKE '%$q%') limit $offset,$rows";
Con eso ya no debería repetir datos.