sql >> Databasteknik >  >> RDS >> Mysql

Välj distinkta aviseringar och förbered ett tydligare meddelande

Jag delar bara frågedelen som löser dina första och andra krav förutsatt att dina data förblir i samma struktur. Du kan lägga till anslutningarna och annan nödvändig information i din fråga.

SELECT myView.*, CONCAT(REPLACE(REPLACE(group_concat(SUBSTRING(notification_message,9)),'</strong>',''),SUBSTRING_INDEX(notification_message,'>',-1),''), SUBSTRING_INDEX(notification_message,'>',-1)) AS Message
FROM (SELECT DISTINCT receiver_id, notification_issuer, notification_message, notification_target, notification_type FROM imgzer_notifications
WHERE receiver_id = 9 and notification_seen = 1 ORDER BY notification_time DESC) myView GROUP BY myView.receiver_id, myView.notification_target, myView.notification_type;

Jag vet att strängfunktionerna ser komplicerade ut, men för att komma fram till din önskade utdata, var man tvungen att leka med de genererade strängarna. Jag har modifierat din datauppsättning i SQL Fiddle lite för att kontrollera min produktion. Du kan göra detsamma på:

http://www.sqlfiddle.com/#!2/70a937/49

Låt mig veta om det finns några andra kriterier som ska uppfyllas eller någon förbättring du behöver i frågan.



  1. Datatyp/struktur för att lagra tidszonförskjutning i MySQL

  2. Gratis ES för 11.2.0.4 och 12.2 Releasedatum

  3. Syntaxfel nära ORDER BY order DESC i MySQL

  4. Hur uppdaterar man en stor tabell med miljontals rader i SQL Server?