AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-8701

Martin Hennings's questions

Martin Hope
Martin Hennings
Asked: 2012-09-11 01:43:56 +0800 CST

Como obtenho o valor atual e o próximo maior em uma seleção?

  • 20

Eu tenho uma tabela InnoDB 'idtimes' (MySQL 5.0.22-log) com colunas

`id` int(11) NOT NULL,
`time` int(20) NOT NULL, [...]

com uma chave única composta

UNIQUE KEY `id_time` (`id`,`time`)

portanto, pode haver vários carimbos de data/hora por id e vários ids por carimbo de data/hora.

Estou tentando configurar uma consulta onde recebo todas as entradas mais o próximo tempo maior para cada entrada, se existir, portanto, deve retornar, por exemplo:

+-----+------------+------------+
| id  | time       | nexttime   |
+-----+------------+------------+
| 155 | 1300000000 | 1311111111 |
| 155 | 1311111111 | 1322222222 |
| 155 | 1322222222 |       NULL |
| 156 | 1312345678 | 1318765432 |
| 156 | 1318765432 |       NULL |
+-----+------------+------------+

No momento estou até agora:

SELECT l.id, l.time, r.time FROM 
    idtimes AS l LEFT JOIN idtimes AS r ON l.id = r.id
    WHERE l.time < r.time ORDER BY l.id ASC, l.time ASC;

mas é claro que isso retorna todas as linhas com r.time > l.time e não apenas a primeira ...

Acho que vou precisar de uma subseleção como

SELECT outer.id, outer.time, 
    (SELECT time FROM idtimes WHERE id = outer.id AND time > outer.time 
        ORDER BY time ASC LIMIT 1)
    FROM idtimes AS outer ORDER BY outer.id ASC, outer.time ASC;

mas não sei como me referir à hora atual (sei que o SQL acima não é válido).

Como faço isso com uma única consulta (e prefiro não usar @variables que dependem de percorrer a tabela uma linha por vez e lembrar o último valor)?

mysql innodb
  • 4 respostas
  • 78538 Views
Martin Hope
Martin Hennings
Asked: 2012-09-06 01:14:19 +0800 CST

Como alterar a exibição de uma string vazia na ferramenta de linha de comando mysql?

  • 1

Estou mantendo um banco de dados com tabelas InnoDB. Essas tabelas possuem algumas colunas do tipo (de show create table):

`val0` varchar(30) default NULL,
`val1` varchar(30) default NULL,
etc...

Na linha de comando do mysql, estou procurando entradas NULL nessas tabelas.

Agora selecionei algumas linhas onde val0 IS NULL AND val1 = ''(string vazia), mas a linha de comando do mysql mostra os dois valores como

+------+------+
| val0 | val1 |
+------+------+
| NULL | NULL |
+------+------+

Aparentemente, isso está me confundindo. Esse comportamento é intencional? Existe um método para definir como strings vazias são exibidas?


EDITAR:

Devo mencionar que o STRICT MODE (consulte os documentos ) parece estar ativado.

A pergunta

SELECT * FROM table WHERE val0 IS NULL AND val1 = '';

encontra a linha acima. A pergunta

SELECT * FROM table WHERE val0 IS NULL AND val1 IS NULL;

não encontra essa linha. Ainda assim, o '' é exibido como 'NULL'. Como faço para mudar isso?

A versão do servidor é "5.0.22-log".


EDIÇÃO 2:

Aqui está o SHOW CREATE TABLE completo (anônimo) mytable:

CREATE TABLE `mytable` (
  `id` int(11) NOT NULL,
  `time` int(20) NOT NULL,
  `val0` varchar(30) default NULL,
  `val1` varchar(30) default NULL,
  `val2` varchar(30) default NULL,
  `val3` varchar(30) default NULL,
  `val4` varchar(30) default NULL,
  `val5` varchar(30) default NULL,
  `val6` varchar(30) default NULL,
  `val7` varchar(30) default NULL,
  `val8` varchar(30) default NULL,
  `val9` varchar(30) default NULL,
  `status` tinyint(4) default '0',
  UNIQUE KEY `idtime` (`id`,`time`),
  KEY `status` (`status`),
  KEY `id` (`id`),
  KEY `time` (`time`),
  CONSTRAINT `mytable_ibfk_1` FOREIGN KEY (`id`) REFERENCES `idtable` (`id`) 
    ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8

Aqui estão minhas perguntas:

select * from mytable where val1 is null limit 1;

-> sem resultado

select * from mytable where val1 = '' limit 1;

resultado:

+-----+------------+------+------+------+------+------+------+------+------+------+------+--------+
| id  | time       | val0 | val1 | val2 | val3 | val4 | val5 | val6 | val7 | val8 | val9 | status |
+-----+------------+------+------+------+------+------+------+------+------+------+------+--------+
| 300 | 1346855716 | 0    | NULL | 42   | 4711 | blib | blub | NULL | NULL | NULL | NULL |      5 |
+-----+------------+------+------+------+------+------+------+------+------+------+------+--------+

Curiosidade: Esses últimos quatro NULLs são na verdade a string "NULL". (Estou apenas mantendo este sistema, não o construí...)

mysql innodb
  • 1 respostas
  • 2486 Views
Martin Hope
Martin Hennings
Asked: 2012-05-29 23:38:28 +0800 CST

O que é um banco de dados com ".res" em seu nome?

  • 2

Não tenho muita experiência com MySQL e estou tentando consertar alguns bancos de dados.

No mysql, um "SHOW DATABASES" mostra (entre outros) o banco de dados principal "MainDB" e outro banco de dados "MainDB.res" . Se estou tentando DUMP ou USE esse segundo banco de dados (com ``o nome), recebo o erro
ERROR 1102 (42000): Incorrect database name 'MainDB.res'.
O dump do MainDB funciona sem problemas. Agora, estou me perguntando se MainDB.res é algum banco de dados especial ou talvez gerado automaticamente para o qual o administrador do MySQL não tem direitos? Como posso consultar esse banco de dados?


Informações detalhadas:
Originalmente, eu queria ver todas as conexões ibfk entre todas as tabelas.
Agora estou procurando um bug nos bancos de dados porque não consigo olhar para information_schema, como
mysql> SELECT * FROM information_schema.KEY_COLUMN_USAGE;
resultado na mensagem de erro
ERROR 1103 (42000): Incorrect table name 'accessgroup'
e li algumas postagens no fórum sugerindo que o erro ocorre porque mais de uma tabela foi encontrada com esse nome e renomeá-lo pode resolver o problema. Essa é a razão pela qual eu queria dar uma olhada em "MainDB.res" em primeiro lugar...

EDITAR:

MainDB.res/ é de fato um diretório (em /var/lib/mysql/) contendo alguns, mas não todos os arquivos no diretório MainDB/. Alguns arquivos ausentes são do tipo .frm, alguns .MYD e .MYI. 'accessgroup.frm' está em ambos os diretórios. (Não posso anonimizar a saída de ls -l o suficiente para colá-la aqui.) Vou tentar o que acontece se eu mover o diretório MainDB.res para outro lugar.

mysql innodb
  • 3 respostas
  • 430 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve