1

こんにちは、これは私の質問です..

SELECT u.url,u.url_id,@mailid=wu.email FROM urls_uptime_log u INNER JOIN website_suburls wd ON u.url_id=wd.id
 INNER JOIN website_to_sms wu ON wd.websiteId=wu.website_id WHERE  u.time_stamp>=DATE_SUB(curdate(),INTERVAL 1 DAY) AND u.status<>200

編集:私が得た出力テーブルは次のとおりです:(この出力には、ステータスのサイトのURLが含まれています!= 200)

url     |  url_id    |@mailid=wc.email
+-------+------------+----------------
http:/dfg   1616          aaa@gmail.com
+--------+------------+----------------
http:dfff   1621           aaa@gmail.com
+--------+------------+----------------
http:dfff   1619           bbb@ymail.com

特定の電子メールがチェックされているサイトの数を確認する必要がありますか? 以下のクエリを使用できますか?

SELECT COUNT(u.url) FROM urls_uptime_log u INNER JOIN website_suburls wd ON u.url_id=wd.id 
INNER JOIN website_to_sms wu ON wd.websiteId=wu.website_id WHERE wu.email=@mailid
4

1 に答える 1

3

ユーザー変数に値を割り当てるには:=、比較演算子の代わりに代入演算子を使用する必要があります=。あなたが本当にそれを意味するなら、試してみてください

SELECT u.url,u.url_id, @mailid := wu.email 
  FROM urls_uptime_log u JOIN website_suburls wd 
    ON u.url_id = wd.id JOIN website_to_sms wu 
    ON wd.websiteId = wu.website_id 
 WHERE u.time_stamp >= CURDATE() - INTERVAL 1 DAY 
   AND u.status <> 200

一方、列に別の名前 (エイリアス) を付けたいだけの場合は、次のようにします。

SELECT u.url, u.url_id, wu.email mailid ...

更新:テーブル スキーマ、サンプル データ、目的の出力を見ずに判断するのは難しいですが、このようなことを試すことができます

SELECT COUNT(DISTINCT u.url) 
  FROM urls_uptime_log u JOIN website_suburls wd 
    ON u.url_id = wd.id JOIN website_to_sms wu 
    ON wd.websiteId = wu.website_id
 WHERE wu.email IN
(
    SELECT DISTINCT wu.email 
      FROM urls_uptime_log u JOIN website_suburls wd 
        ON u.url_id = wd.id JOIN website_to_sms wu 
        ON wd.websiteId = wu.website_id 
     WHERE u.time_stamp >= CURDATE() - INTERVAL 1 DAY 
       AND u.status <> 200
)
于 2013-09-19T03:58:27.217 に答える