EDITAR PARA ACLARAREspecificación de los récord para volver de una cláusula GROUP BY
probablemente estoy mal entendido el uso de GROUP BY
así que voy a reformular mi pregunta sin hacer suposiciones sobre cómo resolver el problema:
I tienen una lista de term_id
s y una tabla que contiene los objetos (que tienen un object_id
PK y term_id
como FK entre otros campos), necesito para extraer el objeto con el más alto object_id
para cada term_id
suministrado. ¿Cuál es la forma correcta de hacerlo?
pregunta original
Estoy seguro de que me falta algo obvio, pero no puedo encontrar la manera de especificar cuales expediente será devuelto por una consulta con un GROUP BY
. De forma predeterminada, GROUP BY
devuelve el primer registro del grupo, ¿quién puede obtener el último en su lugar sin utilizar una subconsulta?
consulta Basic devuelve primer registro:
SELECT *
FROM wp_term_relationships
WHERE term_taxonomy_id IN (20, 21, 22)
GROUP BY term_taxonomy_id
esto funciona, pero con una subconsulta
SELECT *
FROM (
SELECT *
FROM wp_term_relationships
WHERE term_taxonomy_id IN (20, 21, 22)
ORDER BY object_id DESC
) wtt
GROUP BY term_taxonomy_id
esto es un error de sintaxis
SELECT *
FROM wp_term_relationships
WHERE term_taxonomy_id IN (20, 21, 22)
ORDER BY object_id DESC
GROUP BY term_taxonomy_id
Mi cabeza TSQL duele al pensar en SELECCIONAR * con un GRUPO BY realmente trabajando – MartW
Lo estoy posteando como un comentario s No soy un experto en esta área, pero mi primera reacción es que GROUP BY se trata del grupo de registros no específico. Si desea devolver la primera fila en un conjunto relacionado de registros, entonces TOP (1) y una cláusula WHERE apropiada parece más apropiada. Si desea devolver los datos recopilados de un grupo de filas, SUMA, AVG, COUNT, etc., utilice GROUP BY. Si me he perdido el punto de su consulta, por favor, elabore. – Lazarus