За последние 24 часа нас посетили 30517 программистов и 1799 роботов. Сейчас ищут 802 программиста ...

Mysql, функция COUNT

Тема в разделе "MySQL", создана пользователем Nazorei, 18 мар 2010.

  1. Nazorei

    Nazorei Активный пользователь

    С нами с:
    1 фев 2007
    Сообщения:
    228
    Симпатии:
    0
    Некая таблица 'test'

    в ней такие поля:
    id INT -> primary key | idt INT -> index | n INT -> index | n2 INT

    содержимое:
    Код (Text):
    1. id | idt | n  | n2
    2. 1  | 2   | 10 | 0
    3. 2  | 2   | 10 | 0
    4. 3  | 2   | 10 | 0
    5. 4  | 2   | 10 | 5
    6. 5  | 2   | 20 | 0
    7. 6  | 2   | 20 | 0
    8. 7  | 3   | 20 | 0

    запрос: SELECT COUNT(id) FROM test WHERE idt=2 and n=10 and n2<=0

    И вот, Почему результат запроса 4 вместо 3?
     
  2. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    [sql]
    (topas@localhost) [test]>describe test
    -> ;
    +-------+---------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+----------------+
    | id | int(11) | NO | PRI | NULL | auto_increment |
    | idt | int(11) | YES | | NULL | |
    | n | int(11) | YES | | NULL | |
    | n2 | int(11) | YES | | NULL | |
    +-------+---------+------+-----+---------+----------------+
    4 rows in set (0.05 sec)

    (topas@localhost) [test]>insert into `test` values
    -> (1, 2, 10, 0),
    -> (2, 2, 10, 0),
    -> (3, 2, 10, 0),
    -> (4, 2, 10, 5),
    -> (5, 2, 20, 0),
    -> (6, 2, 20, 0),
    -> (7, 3, 20, 0);
    Query OK, 7 rows affected (0.00 sec)
    Records: 7 Duplicates: 0 Warnings: 0

    (topas@localhost) [test]>select * from `test`
    -> ;
    +----+------+------+------+
    | id | idt | n | n2 |
    +----+------+------+------+
    | 1 | 2 | 10 | 0 |
    | 2 | 2 | 10 | 0 |
    | 3 | 2 | 10 | 0 |
    | 4 | 2 | 10 | 5 |
    | 5 | 2 | 20 | 0 |
    | 6 | 2 | 20 | 0 |
    | 7 | 3 | 20 | 0 |
    +----+------+------+------+
    7 rows in set (0.00 sec)

    (topas@localhost) [test]>select count(id) from test where idt = 2 and n=10 and n2 <= 0;
    +-----------+
    | count(id) |
    +-----------+
    | 3 |
    +-----------+
    1 row in set (0.09 sec)

    (topas@localhost) [test]>
    [/sql]
     
  3. Nazorei

    Nazorei Активный пользователь

    С нами с:
    1 фев 2007
    Сообщения:
    228
    Симпатии:
    0
    Блин... точно, все норм. Спасибо.
    Вот что значит работать в 4 утра))