Articles of sql

Qual é a maneira mais eficiente / elegante de analisar uma tabela plana em uma tree?

Suponha que você tenha uma tabela simples que armazene uma hierarquia de tree ordenada: Id Name ParentId Order 1 ‘Node 1’ 0 10 2 ‘Node 1.1’ 1 10 3 ‘Node 2’ 0 20 4 ‘Node 1.1.1’ 2 10 5 ‘Node 2.1’ 3 10 6 ‘Node 1.2’ 1 20 Aqui está um diagrama, onde temos [id] […]

Como criar uma consulta recursiva hierárquica do MySQL

Eu tenho uma tabela MySQL que é a seguinte: id | name | parent_id 19 | category1 | 0 20 | category2 | 19 21 | category3 | 20 22 | category4 | 21 …… Agora, eu quero ter uma única consulta MySQL à qual eu simplesmente forneça o id [por exemplo, digamos ‘id = […]

Inserir resultados de um procedimento armazenado em uma tabela temporária

Como eu faço um SELECT * INTO [temp table] FROM [stored procedure] ? Não FROM [Table] e sem definir [temp table] ? Select todos os dados do BusinessLine em tmpBusLine funciona bem. select * into tmpBusLine from BusinessLine Eu estou tentando o mesmo, mas usando um stored procedure que retorna dados, não é exatamente o […]

Como divido uma string para poder acessar o item x?

Usando o SQL Server, como divido uma string para poder acessar o item x? Pegue uma string “Hello John Smith”. Como posso dividir a string pelo espaço e acessar o item no índice 1, que deve retornar “John”?

Obtenha os primeiros n registros para cada grupo de resultados agrupados

O exemplo a seguir é o mais simples possível, embora qualquer solução deva ser capaz de escalar para muitos resultados n principais: Dada uma tabela como essa abaixo, com colunas de pessoa, grupo e idade, como você obteria as duas pessoas mais velhas em cada grupo? (Os agrupamentos dentro dos grupos não devem render mais […]

SQL selecionar apenas linhas com valor máximo em uma coluna

Eu tenho esta tabela para documentos (versão simplificada aqui): +——+——-+————————————–+ | id | rev | content | +——+——-+————————————–+ | 1 | 1 | … | | 2 | 1 | … | | 1 | 2 | … | | 1 | 3 | … | +——+——-+————————————–+ Como faço para selecionar uma linha por id […]

ROW_NUMBER () no MySQL

Existe uma maneira legal no MySQL para replicar a function ROW_NUMBER() do SQL Server? Por exemplo: SELECT col1, col2, ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col3 DESC) AS intRow FROM Table1 Então eu poderia, por exemplo, adicionar uma condição para limitar intRow a 1 para obter uma única linha com a maior col3 […]

INNER JOIN ON vs cláusula WHERE

Por simplicidade, suponha que todos os campos relevantes sejam NOT NULL . Você pode fazer: SELECT table1.this, table2.that, table2.somethingelse FROM table1, table2 WHERE table1.foreignkey = table2.primarykey AND (some other conditions) Se não: SELECT table1.this, table2.that, table2.somethingelse FROM table1 INNER JOIN table2 ON table1.foreignkey = table2.primarykey WHERE (some other conditions) Esses dois funcionam da mesma maneira […]

Selecione a primeira linha em cada grupo GROUP BY?

Como o título sugere, gostaria de selecionar a primeira linha de cada conjunto de linhas agrupadas com GROUP BY . Especificamente, se eu tenho uma tabela de purchases que se parece com isso: SELECT * FROM purchases; Minha saída: id | cliente | total — + ———- + —— 1 | Joe | 5 2 […]

Como fazer uma junit completa no MySQL?

Eu quero fazer um Full Outer Join no MySQL. Isso é possível? Uma junit externa completa é suportada pelo MySQL?