2017-08-01 7 views
0

サイトの最後のアクティブなチャットユーザーのデータセットを取得しようとしていますが、クエリのwhere句は " 「期限切れ」している結果...Date_Subを使用したMySQLクエリはクエリで空のセットを返しますが、結合が含まれている場合はカウント= 1を返します。

は以下を返すことは、私が期待するものです...

mysql> select * from openchats where date_sub(now(), interval 15 minute) < active; 
Empty set (0.00 sec) 

はしかし、私は私の人生を容易にするために、テーブルのカップルに参加し、クエリに参加しています0を期待したときに1のカウントを返します。

mysql> SELECT 
    -> (
    ->  COUNT(*) 
    -> ) AS `count` 
    -> FROM 
    -> openchats Openchats 
    -> LEFT JOIN users Users ON Users.id = (Openchats.user_id) 
    -> LEFT JOIN chatrooms Chatrooms ON Chatrooms.id = (Openchats.chatroom_id) 
    -> WHERE 
    -> (
    ->  DATE_SUB(NOW(), interval 15 minute) < 'Openchats.active' 
    ->  AND open = 1 
    -> ); 
+-------+ 
| count | 
+-------+ 
|  1 | 
+-------+ 
1 row in set, 1 warning (0.00 sec) 
0ここで

は、テーブルのデータ

mysql> select * from openchats; 
+----+-------------+------+---------------------+--------------------------------------+---------------------+---------------------+ 
| id | chatroom_id | open | active    | user_id        | created    | modified   | 
+----+-------------+------+---------------------+--------------------------------------+---------------------+---------------------+ 
| 1 |   3 | 1 | 2017-07-31 19:14:33 | 3f189dab-597a-468f-8f6f-ae577a8e05e8 | 2017-07-31 18:38:00 | 2017-07-31 18:38:00 | 
+----+-------------+------+---------------------+--------------------------------------+---------------------+---------------------+ 
1 row in set (0.00 sec) 

で誰もが、私は2番目のクエリは、ゼロの数を返すことができますどのように私に説明できますか?

DATE_SUB(NOW(), interval 15 minute) < 'Openchats.active' 

あなたがではなく、文字列「Openchats.active」にDATE_SUBの結果を比較している:

はあなたのミスが次の行にあるように見えます...

答えて

1

をありがとうOpenchatsテーブルのアクティブな属性。引用符を削除してもう一度実行してみてください:

DATE_SUB(NOW(), interval 15 minute) < Openchats.active 
関連する問題