Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL Изберете редове при първото появяване на всяка уникална стойност

mysql има "измама" за това:

select *
from mytable
group by cid;

Това е всичко, от което се нуждаете, защото в mysql ви позволява да не агрегира колоните, които не са групирани по (другите бази данни биха довели до синтактична грешка), в който случай извежда само първото появяване на всяка група по стойност(и). Имайте предвид обаче, че това няма да гарантира начина в който се определя "първото" появяване (това ще бъде точно как се четат редовете)

Ако искате особен първо срещане, първо сортирайте, след това приложете измамата група по:

select *
from (
    -- order by the "time" column descending to get the "most recent" row
    select * from mytable order by time desc
    ) x
group by cid


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво казва стандартът на SQL за скобите в операторите на SQL UNION/EXCEPT/INTERSECT?

  2. проблем с предупреждението:очаква параметър 1 да бъде mysqli_result

  3. ORDER BY datetime прави заявката много бавна

  4. Как да съхранявате повтарящи се дати, като имате предвид лятното часово време

  5. SQLSTATE[HY000] [2002] Неуспешен опит за свързване.. - При опит за свързване от локален към отдалечен сървър