2016-04-07 15 views
-2

bu hata phpmydamin mesajı var: 'olan maddede' de bilinmeyen sütun 'damgası' My sütun adı bugün için karma sayısını almak nasıl mySQL sorgusu bana bir hata veriyor. Nasıl düzeltilir? Bu sorguyu çalıştırdığınızda

timestamp

SELECT DISTINCT (
hash 
) AS total 
FROM behaviour 
HAVING total =1 and date(timestamp) = curdate() 

olduğunu

?

+0

Sütun adından önce veya sonra boşluk olabilir. Lütfen kontrol edin. – Arun

+0

Ne yapmaya çalışıyorsun? Bir satırı 1 değeriyle döndürün (mevcut tarih için varsa)? – jarlh

+0

@jarlh Davranış tablosunda, bazı karma değerler 1 kereden fazla görünür. diğer karma değerler sadece 1 kez görünür. Sadece 1 kez görünen karma satırları saymak istiyorum. – villoui

cevap

3

where'u kullanın. Ve parantezler select distinct için uygun değildir (distinct bir işlev değildir).

SELECT COUNT(DISTINCT hash) AS total 
FROM behaviour 
WHERE date(timestamp) = curdate(); 

O sütun üzerinde bir işlevi kullanmadan WHERE maddesini yazmak daha iyidir: daha karmaşık olmasına rağmen

SELECT COUNT(DISTINCT hash) AS total 
FROM behaviour 
WHERE timestamp >= curdate() AND timestamp < date_add(curdate, interval 1 day); 

, bu veritabanı altyapısı bir dizin üzerinde kullanmanıza olanak sağlar Sana niyetinde şüpheli behaviour(timestamp, hash) üzerine behaviour(timestamp) (veya daha iyisi,

DÜZENLEME:.

Eğer hash istiyorsanız

select count(*) 
from (select hash 
     from behaviour 
     where timestamp >= curdate() AND timestamp < date_add(curdate, interval 1 day) 
     group by hash 
     having count(*) = 1 
    ); 
+0

Teşekkürler, ama yeniden ifade edeyim. Davranış tablosunda, bazı kareler 1 kereden fazla görünmelidir. diğerleri sadece 1 kez görünür. Ben sadece 1 kez görünen karma saymak istiyorum, her şey değil – villoui

+0

bu benzersiz benzersiz satırları sayıyorsunuz. Bugün görünen karma satırlarını saymak istiyorum – villoui

0

sadece bir kez mevcut karma sayım değerlerini için:

select count(*) 
from 
(
    select hash 
    from behavior 
    where date(timestamp) = curdate() 
    group by hash 
    having count(*) = 1 
) dt 

iç seçme (türetilmiş tablo) sadece bir kez mevcut karma değer döner sadece bir kez ortaya çıktığı bir yöntem, bir alt sorgu olup. Dış seçim bu satırları sayar.