sql >> Databasteknik >  >> RDS >> Mysql

MySQL-fråga för att hitta kunder som har beställt två specifika produkter

Jag gör den här typen av fråga på följande sätt:

SELECT COUNT(DISTINCT t1.userid) AS user_count
  FROM TRANSACTIONS t1
  JOIN TRANSACTIONS t2 USING (userid)
 WHERE t1.product_id = 'prod1' 
   AND t2.product_id = 'prod2';

GROUP BY lösning visas av @najmeddine producerar också svaret du vill ha, men det fungerar inte lika bra på MySQL. MySQL har svårt att optimera GROUP BY frågor.

Du bör prova båda frågorna och analysera optimeringen med EXPLAIN , och kör även några tester och tidsbestämda resultaten med tanke på mängden data i din databas.



  1. MySQL LOAD_FILE returnerar NULL

  2. Pymysql Cursor.fetchall() / Fetchone() Returnerar ingen

  3. Hur skriver man en noll safe compare <=> i ren SQL?

  4. PDO-uppdateringstabell med array