www.state-it.info

Gran base de respuestas a las preguntas de los desarrolladores
Header decor

Cómo redactar una solicitud de búsqueda de valores con el fin de la condición de?

alehandroWEB 2018-10-16 13:28:18

5bc5b98e57b64300069797.png
Es necesario hacer groupBy de uniqueid y para mostrar sólo aquellos grupos donde la última entrada en el grupo de status='no';
Es decir, con esta tabla debe вывестись una fila con id=3

Total answers: 2

TelepnevDmitriy 2018-10-16 13:34:05

select max(t1.id), t1.uniqueid, t1.status
from table1 t1
left join table1 t2 on t2.uniqueid = t1.uniqueid
    and t2.status <> 'no'
where t2.id is null
group by t1.uniqueid

slo_nik 2018-10-16 15:14:43

Buenas tardes.
En la condición de la cláusula where no está muy claro. ¿Por qué elegir id is null? Ya que en la tabla no id.


TelepnevDmitriy 2018-10-16 19:31:09

slo_nik, es una decisión "negativo": necesito recuperar todos los registros, en las que la situación es diferente del deseado, y desde el final de la muestra se les excluye.


slo_nik 2018-10-16 19:55:20

TelepnevDmitriy, no se entiende completamente... es necesario pensar)
Pero... En el marcador)


alehandroWEB 2018-10-17 09:25:53

En el final de la muestra max(t1.id) se muestra correcto, pero el id no le corresponde. Resulta que todos los demás campos no se toman con este último, y desde la primera fila del grupo. Como hacer para que el total de la muestra correspondía a la fila con id=max(t1.id) ?


TelepnevDmitriy 2018-10-17 11:55:02

No lo entiendo. Qué id de esto? Como no lo cumple? De su tabla - uniqueid uno de varios registros. Los campos que no corresponden? Status?


alehandroWEB 2018-10-17 12:37:09

5bc700c0a9327117304992.png
id y max(t1.id) diferentes, y cuando en la tabla se agrega, como un campo de fecha, la fecha se corresponder con el de la primera entrada en el grupo, y ni la última.


TelepnevDmitriy 2018-10-17 12:57:50

A solicitud de la misma, lo que yo he escrito? No puede ser que este id - de hecho, el número de línea en phpmyadmin'e?


alehandroWEB 2018-10-17 13:45:48

select t1.id, max(t1.id), t1.uniqueid, t1.status
from table1 t1
left join table1 t2 on t2.uniqueid = t1.uniqueid
    and t2.status <> 'no'
where t2.id is null
group by t1.uniqueid

yo sólo t1.id select agregó


TelepnevDmitriy 2018-10-17 17:39:35

pero ¿por qué? usted mismo es el id de max(t1.id). Esta es su última id que corresponde a las condiciones. si se necesita hacer un alias.
select max(t1.id) as id

Y en general, MySQL, al parecer tratando de interpretar la expresión sin аггрегирующих funciones y grupos como DISTINCT...


alehandroWEB 2018-10-17 21:02:10

Yo digo, en la tabla, ha añadido el campo de fecha y fecha en que se debe cumplir es el último id, y corresponde a la primera. Resulta que una consulta es necesario obtener todos los max(t1.id), y el segundo de ellos obtener la fecha de.


TelepnevDmitriy 2018-10-18 04:38:13

alehandroWEB, Sí, entonces se necesita una segunda solicitud. Bueno, esta consulta envolver en una subconsulta con join de la tabla de destino


NikoX 2018-10-16 13:31:07

Como opción:

SELECT SUBSTRING_INDEX(GROUP_CONCAT(id ORDER BY id DESC), ",", 1) as id FROM mytable WHERE status="no" GROUP BY uniqueid

alehandroWEB 2018-10-16 13:35:23

responde con id=3 y id=6, y sólo debería id=3, así como en el grupo con uniqueid=2, la última línea con el estado de yes


TelepnevDmitriy 2018-10-16 13:36:00

él te mostrará otras 6 en este caso.


NikoX 2018-10-16 17:00:37

alehandroWEB, así que todo es cierto, el 3 y el 6 es el Id agrupados por uniqueid aquellos donde la status=no. Tal vez usted los términos de lo indicado aún?


Preguntas relacionadas:

Footer decor

© www.state-it.info | Base of answers to questions for developers and programmers.