Eu tenho a tabela fornecida:
mysql> describe streaming_innodb;
+---------------+------------------------+------+-----+---------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------------+------+-----+---------------------+-----------------------------+
| row_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| create_time | timestamp | NO | MUL | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| user_time | timestamp | NO | MUL | 0000-00-00 00:00:00 | |
| uTINYINT | tinyint(3) unsigned | YES | | NULL | |
| uSMALLINT | smallint(5) unsigned | YES | | NULL | |
| uMEDIUMINT | mediumint(8) unsigned | YES | | NULL | |
| uINTEGER | int(10) unsigned | YES | | NULL | |
| uBIGINT | bigint(20) unsigned | YES | | NULL | |
| uDecimal_10_5 | decimal(10,5) unsigned | YES | | NULL | |
| uDecimal_10_0 | decimal(10,0) unsigned | YES | | NULL | |
| uFloat_30_15 | float(30,15) unsigned | YES | | NULL | |
| uFloat_10_10 | float(10,10) unsigned | YES | | NULL | |
| sTINYINT | tinyint(4) | YES | | NULL | |
| sSMALLINT | smallint(6) | YES | | NULL | |
| sMEDIUMINT | mediumint(9) | YES | | NULL | |
| sINTEGER | int(11) | YES | | NULL | |
| sBIGINT | bigint(20) | YES | | NULL | |
| sDecimal_4_1 | decimal(4,1) | YES | | NULL | |
| sDecimal_10_2 | decimal(10,2) | YES | | NULL | |
| sFloat_2_0 | float(2,0) | YES | | NULL | |
| sFloat_15_8 | float(15,8) | YES | | NULL | |
| rCHAR5 | char(5) | YES | | NULL | |
| rCHAR100 | varchar(100) | YES | | NULL | |
| rDATE | datetime | YES | | NULL | |
| rTIME | time | YES | | NULL | |
| rDATETIME | datetime | YES | | NULL | |
| rTIMESTAMP | timestamp | NO | | 0000-00-00 00:00:00 | |
+---------------+------------------------+------+-----+---------------------+-----------------------------+
27 rows in set (0.00 sec)
Supondo que eu queira encontrar o valor de uma coluna, com base em um valor de outra coluna, posso usar o LIKE
método
Exemplo:
mysql> select user_time from streaming_scaledb where rTime like "04:44:21";
+---------------------+
| user_time |
+---------------------+
| 2019-03-18 04:52:05 |
+---------------------+
1 row in set (0.02 sec)
Porém, para este problema só sei o valor "04:44:21"; ou seja, preciso encontrar X e não sei o esperado user_time
.
mysql> select user_time from streaming_scaledb where X like "04:44:21";
Existe alguma consulta que eu possa usar para encontrar X ?
Plano A: Código do cliente para construir a consulta com o nome da coluna variável.
Plano B: faça algo semelhante, mas usando uma rotina armazenada na qual você usa
CONCAT
,PREPARE
eEXECUTE
.Enquanto isso,
FLOAT(m,n)
é uma má ideia. Isso leva a dois arredondamentos. Sugira simplesmente usarFLOAT
. Além disso,FLOAT
contém cerca de 7 dígitos significativos, mas muitas de suas colunas flutuantes parecem esperar mais. Talvez você queiraDOUBLE
(~16 dígitos) ouDECIMAL
.