Gibi, birden çok tabloya katılabiliyor mysql içinde en iyi 1 satır nasıl seçileceği, SQL Server 2005'te üst anahtar kelime var & her ID/sütunun aşırı almak istiyorum. Limit no ile kısıtlar. satır döndürür bu yüzden sorunumu çözemez.MYSQL top N satırını birden çok tablodan birleştir
cevap
SELECT v.*
FROM document d
OUTER APPLY
(
SELECT TOP 1 *
FROM version v
WHERE v.document = d.id
ORDER BY
v.revision DESC
) v
veya
SELECT v.*
FROM document d
LEFT JOIN
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY v.id ORDER BY revision DESC)
FROM version
) v
ON v.document = d.id
AND v.rn = 1
belgeleriniz genellikle birkaç revizyonları ve Tümünü ya da hemen hemen tüm dokümanları seçmek gerekirse ikincisi daha verimlidir; Eğer belgeler birçok revizyona sahipse ya da sadece küçük bir belge alt kümesini seçmeniz gerekiyorsa, daha etkilidir.
Güncelleme:
Maalesef soruyu fark etmedi yaklaşık MySQL
olduğunu. MySQL
yılında
, bunu bu şekilde yapın:
SELECT *
FROM document d
LEFT JOIN
version v
ON v.id =
(
SELECT id
FROM version vi
WHERE vi.document = d.document
ORDER BY
vi.document DESC, vi.revision DESC, vi.id DESC
LIMIT 1
)
hızlı çalışması için version (document, revision, id)
bir bileşik endeksi oluşturun.
MySQL, "APPLY" veya "ROW_NUMBER()' (pencere işlevleri) işlevini desteklemez. –
@ Bill: Doğru, 'MySQL' ile ilgili olduğunu fark etmedi. – Quassnoi
Daha sonra yanıt çalışır, ancak bazı satırlar için yalnızca bir kayıt varsa: sürümde belirli bir docID için yalnızca bir kayıt var, bu durumda sorgu için bu ID için satır almazsınız. Geç cevapla/yorum için özür dilerim –
Sizi doğru anlıyorsam, sorununuzu da çözmez. üst sınırlamak için tam olarak eşdeğerdir. Aradığın şey ekstremleri istiyorsanız, max() veya min() gibi toplama işlevleridir. örneğin:
select link_id, max(column_a), min(column_b) from table_a a, table_b b
where a.link_id = b.link_id group by link_id
- 1. Mysql Tablodan birden çok rasgele satırı silme
- 2. SQL SELECT Birden çok tablodan
- 3. Birden çok tablodan veri görüntüleme
- 4. Birden çok tablodan anlamlı veri nasıl görüntülenirim (mySQL)
- 5. Yabancı kısıtlamaları olan birden çok tablodan silme
- 6. Java: Dosya satırını, "\ n"
- 7. mysql sorgusunu kullanarak birleştir?
- 8. Datalist satırını birden çok birincil anahtarla silme
- 9. Tablo satırını birden çok satırda göster
- 10. Birden çok tablodan ayrı değer nasıl seçilir
- 11. SQLiteDatabase kullanarak birden çok tablodan SQLite sorgusu
- 12. Birden çok değişken kullanarak MySQL verilerini topla
- 13. Tablodan akıcı bir sorgu oluşturucu ile birden çok tablo seçin
- 14. MySQL tabloları birden çok kez
- 15. Güncellenmesi Birden çok değer MySQL
- 16. Birden çok seçim sorgusu sonucu bir tabloda veya sorguda birleştir
- 17. Birden çok sütunda aynı değerlere sahip satırları birleştir
- 18. MySQL Birden Fazla Tablodan Yeni Tabloya Kayıt Ekle
- 19. Cassandra cql: Tablodan LAST n satırlarının seçilmesi
- 20. Birden çok Ruby satırını html.erb dosyasında nasıl çalıştırırım
- 21. MYSQL Tablodan İLK yinelenenleri sil
- 22. MySQL - Tabloları birleştir, yalnızca Max ID'ye eriş
- 23. Verileri birden çok tablodan birleştirmek için etkili bir yol
- 24. TSQL - Birden çok birleşim yolu olan tablodan seçim yapın
- 25. Birden çok tabloyu kullanarak birden çok tablo kullanarak Tablolara katılma
- 26. Birden Çok MySQL Sütunu ve Satırının Birleştirilmesi
- 27. Birden çok alanı MySQL içinde sıralama
- 28. Nasıl mysql birden çok tabloya kesişim
- 29. Birden çok birleştirme ile MySQL sorgusunu hızlandır
- 30. Tekli MySQL bağlantısı birden çok modüldeki NodeJS
Belki bir örnek? – hsz
Evet, soru çok açık değil. Sadece tahmin ettim –
Soru çok açık değil, ama sanırım sık sık ortaya çıkan "grup başına en büyük" problemin başka bir durumu. –