mysql acemi biraz yardıma ihtiyacım var lütfen

4 Cevap php

Ben sadece PHP / MySQL öğrenmeye başladı ve şimdiye kadar sadece çok temel bazı querys yapıyor ama şimdi bir şey yapmak nasıl stumped.

Table A Columns imageid,catid,imagedate,userid

Ne yapmaya çalışıyorlar imagedate olanlar Tablo A veri olsun. Ben sadece her CatID için 1 sonuç (ImageId, kimliği) dönmek istiyorum. Mysql sorguda benzersiz kontrol etmek için bir yolu var mı?

Thanks John

4 Cevap

Tarihe göre ayrı almak için:

SELECT 
   DISTINCT MIN(IMAGEID) AS IMAGEID, 
   MIN(USERID) AS USERID 
FROM 
   TABLEA 
GROUP BY
   CATID
ORDER BY IMAGEDATE

If you want to check for uniqueness in the query (perhaps to ensure that something isn't duplicated), you can include a WHERE clause using the MySQL COUNT() function. E.g., SELECT ImageID, UserID FROM TABLEA WHERE COUNT(ImageID) < 2.

Ayrıca DISTINCT anahtar sözcüğünü kullanabilirsiniz, ancak bu grup tarafından benzer (aslında, MySQL docs bile sonuçları döndürmek için perde arkasında GROUP BY kullanabilirsiniz söylüyorlar). Yani aynı ImageId sahip birden fazla kayıt varsa sadece 1 kayıt dönecektir vardır.

Teklik özelliği uygulamanız için önemli ise bir kenara, (yani bir alan için aynı değere, örneğin e-posta ile birden fazla kayıt istemiyorum), bir masanın üzerinde UNIQUE sınırlamasıyla tanımlayabilirsiniz. Bu yinelenen bir satır eklemek çalıştığınızda INSERT sorgusu dışarı bomba yapacaktır. Ancak, bir hata ekleme oluşabilir olduğunu anlamak ve buna göre mantığı kontrol uygulamanın hata kod gerekir.

DISTINCT sözcüğü arama.

Evet DISTINCT seçeneğini kullanabilirsiniz.

Tablo A catid = XXXX DISTINCT ImageId, kimliği seçin