Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Prezados,
Tenho como manter a mesma ordem na qual os registros foram inseridos em consulta com select? Tenho uma tabela aonde os dados são gravados já na ordem de serem recuperados/consultados (isso por motivos especificos/tecnicos). Até ai tudo bem, pois estava funcionando dessa forma a muito tempo e nunca deu errado. O problema é que agora tenho que filtrar (where) alguns registros por uma determinada coluna da respectiva tabela e acaba ficando tudo fora de ordem. Não tenho como dar um "order by", pois a referida tabela não possui a coluna que daria o ordenamento que necessito. Penso que se eu conseguir ordenar pelo número de registro (ponteiro) a coisa voltaria a funcionar corretamente.
Grato e aguardo qualque orientação.
>
Buenas tchê.
Essa tabela não possui um id (Auto Increment)?
Olá, Boa Tarde!
Não. Caso tivesse, seria fácil.
Grato.
Não havendo um GROUP BY ou ORDER BY, a ordem é mantida, não?
Não havendo um GROUP BY ou ORDER BY, a ordem é mantida, não?
Não. Até agora estou sem entender o porque disso...
Tente algo assim ...
Select *
From (select *
From tabela) v
Where campo = 123>
Tente algo assim ...
Select *
From (select *
From tabela) v
Where campo = 123
Olá Motta,
Mil desculpa, mas te confesso que não entendi esse instrução.
Será que o colega poderia exemplificar melhor?
Grato e conto com a sua atenção.
O Mysql irá aplicar o filtro em cima de uma "tabela virtual" o fruto do select.
Dada a condição estranha passada achei que poderia funcionar.
O problema básico aqui é que uma tabela não tem ordem o que determina a ordem é o select.
Crie o campo de ID com autoincrement, então.
Passos:
1 - Crie o campo de ID sem ser autoincrement, com valores nulos
2 - Exporte a tabela (inclusive estrutura)
3 - Altere manualmente a estrutura, colocando o ID como chave primária auto increment
4 - Importe a tabela.
Houve deleções e inserções nesta tabela ?
Houve deleções e inserções nesta tabela ?
Olá Motta,
A referida tabela recebe um volume de dados já ordenados previamente, daí os mesmo ficam arquivados sem sofrerem nenhum tipo de intervenção (insert, update, delete). O que ocorre é que todos os registro recebem um identificador para aquele "lote" de registros. É esse "lote" que estou utilizando para filtrar (where). O que pode ocorrer é existir diversos "lotes" diferentes, só isso, mas penso que essa variedade de lotes não tenha nada a ver, pois cada "lote" é gravador de uma única vez, sendo assim matem-se o ordenamento original.
Grato pela sua atenção e aguardo o seu comentário.
>
Crie o campo de ID com autoincrement, então.
Passos:
1 - Crie o campo de ID sem ser autoincrement, com valores nulos
2 - Exporte a tabela (inclusive estrutura)
3 - Altere manualmente a estrutura, colocando o ID como chave primária auto increment
4 - Importe a tabela.
Olá Massaki,
Eu já havia pensado em fazer algo assim como você mencionou, mas achei que não seria a forma mais correta de fazer isso (tecnicamente falando). É por isso que queria recuperar o próprio ID do registro, daí penso que daria certo.
Grato pela sua atenção.
Publique a estrutura da tabela e quantos registros ela tem.
Publique a estrutura da tabela e quantos registros ela tem.
Olá Motta,
Vamos deixar isso pra lá.
A tabela não tem nada demais não. A mesma é utilizada para receber registros de terceiros. Uma empresa me force os dados no padrão deles via RESTFul JSON e eu jogo dentro dela para puder fazer o que é necessário.
O pessoal de TI dessa empresa são muito fechados e não aceitam nenhum tipo de solicitação, mas consegui falar com o "cacique da tribo" (rs) e pedi para que eles incluam uma coluna com os dados para o devido ordenamento. Acho que vai sair! Vou aguarda e vê no que dá.
Muitíssimo obrigado a você e a todos que tentaram me ajudar.
Até a próxima.
Buenas tchê.
Essa tabela não possui um id (Auto Increment)?