mysql变量在执行查询时返回null

mysql变量在执行查询时返回null,mysql,null,Mysql,Null,嗨,这是我的问题 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

嗨,这是我的问题

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
我需要找出有多少网站的一个特定的电子邮件是检查?我可以使用下面的查询吗

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

要为用户变量赋值,必须使用赋值运算符:=而不是比较运算符=。如果你真的这么想,试试看

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 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
)

看起来你弄乱了一些语法。我想你想让wu.email作为mailid而不是@mailid=wu.email还有一个疑问我怎么能用php打印@mailid??我能用echo吗?这取决于你真正的意思。您是真的想在查询中使用变量,还是只想重命名列?此表单中的用户变量通常用于在检索数据时按顺序处理数据,例如,为了克服MySQL的一些限制,例如访问前一行的值……我需要在第二个查询中使用该mailid,我希望在上述查询之后执行该查询。然后,看起来您不需要MySQL变量。您可以使用第二种方法重命名列,也可以什么都不做。您将在结果集中设置一个名为email的列,并将其值检索到客户端代码中任何名称的变量,并将其用作第二个变量的参数query@user007有关可能的解决方案,请参阅更新的答案。如果它不是你所需要的,而不是考虑提供表模式、样本数据和期望输出。
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
)