2015-07-30 19 views
5

numaralı SQL sorgusundan aldım database/sql ve lib/pq (postgres) paketlerini kullanarak oldukça basit bir sorgu çalıştırıyorum ve bazı alanların sonuçlarını bir dilime atmak istiyorum, ancak bilmem gerek dilim yapmak ne kadar büyük.Geriye sayımı ve sonucu

Bulabildiğim tek çözüm, yalnızca SELECT COUNT(*) FROM tableName; olan başka bir sorguyu yapmaktır.

Hem sorgunun sonucunu hem de döndürülen satır sayısını bir sorguda almanın bir yolu var mı?

+0

Sadece sonuç sayısını kontrol edemiyor musunuz? rows.count() veya bir şey mi? – JamieD77

+3

sayımı kontrol etmenin bir yolunu bulamadım ama bunu buldum .. https://groups.google.com/forum/#!topic/golang-nuts/iHrXJj5MX_A, dilimin uzunluğunu 0 olarak belirttiğinden bahseder ve siz – JamieD77

+0

'a ekleyebildiğim kadarıyla, doğru cevap bu. Eğer bir cevap ekle @ JamieD77 kabul edeceğim. – Arel

cevap

3

kullanılan olur, sorun veritabanı gerçekten aslında önünüzde olsun kaç kayıt bilmiyor böylece veritabanı imleci sonuna kadar numaralandırılan olmayabilir olmasıdır hepsini oku. Saymak için tek yol (genel durumda), sonuç kümesindeki tüm kayıtlardan geçmektir.

Ama pratikte, sen

select *, (select count(*) from table) from table 

gibi kullanarak alt sorgular bunu sadece ilk dışındaki kayıtlar için ikinci sütunu görmezden bunu uygulayabilir. Ama çok kaba ve bunu yapmayı önermiyorum.

+0

Teşekkürler, alt sorguları yapabileceğinizi bilmiyordum. SELECT (select sayımı (*) FROM gözlemleri WHERE profile_id = $ 1 VE yıl = $ 2 AND month = 3 $) sayım, yıl, ay, profile_id, FROM gözlemleri WHERE profile_id = $ 1 AND year = $ 2 AND month = $ 3 ', id, date.Year(), int (date.Month())) – Arel

-1

Sen sayımı (*) Kavramsal olarak

SELECT count(distinct last) 
FROM (XYZTable) 
WHERE date(FROM_UNIXTIME(time)) >= '2013-10-28' AND 
id = 90 ; 
+0

sadece sayımı döndürür. – Arel

0

İstediğiniz şey bu olduğundan emin değilsiniz, ancak yürütülmekte olan önceki seçim deyiminin sayısını döndürmek için @@ Rowcount işlevini çağırabilirsiniz.

SELECT mytable.mycol FROM mytable WHERE mytable.foo = 'bar' 

SELECT @@Rowcount 

Eğer satır istiyorsanız

sen de belki de sadece bir iki SQL ifadelerini ayırmak olabilir ( MSDN)

SELECT mytable.mycol, count(*) OVER(PARTITION BY mytable.foo) AS 'Count' FROM mytable WHERE mytable.foo = 'bar' 

AŞIRI maddesini kullanabilir ayarlayın sonucu dahil sayısı; . Bu, yürütülen her iki ifadenin sonuç kümesini döndürür.

+0

OP'nin PostgreSQL'i kullandığını söyledikleri sorunun bir kısmını mı kaçırdınız? –

+1

Aslında evet, SQL olarak etiketlendiğinden beri yaptım. Yani bir sorguyu çalıştırırken veritabanını/SQL sorusunu kullanıyorum. Cevabımı kaldırmalı mıyım? – SoftwareCarpenter