SQL Query无法检索多个结果

时间:2013-12-06 21:55:57

标签: mysql sql

假设我的表“MyTable”

中有以下列
  1. email_VC =用于存储电子邮件目的
  2. EID =电子邮件ID(这是主键)
  3. 状态=它捕获电子邮件的状态,无论是“第一”,“第二”,“第三”
  4. 时间戳=时间值
  5. 以下SQL查询仅为我提供Status =“First”

    的电子邮件列表
    SELECT email_VC,Status,Timestamp 
        FROM Mytable
        WHERE event_vc = 'first'
        AND  Timestamp  BETWEEN '#sdt#' AND '#edt#'
    

    我希望在完成后为Status =“Second”列出电子邮件地址 列出第一个'然后是“第三个”等等..

    但是当我尝试按如下方式修改上述查询时,它不起作用:

    SELECT email_VC,Status,Timestamp 
        FROM Mytable
        WHERE event_vc = 'first' AND event_VC = "second"
        AND  Timestamp  BETWEEN '#sdt#' AND '#edt#'
    

    问题#2:

    但是,由于EID是主键,因此,如果我想计算中的唯一电子邮件地址 数据库,您认为以下SQL是好的吗?

     SELECT COUNT(DISTINCT(email_VC) as CountEmail 
         FROM   MyTable 
    

    我担心的是,我在SQL查询中没有使用任何主键。

1 个答案:

答案 0 :(得分:0)

问题1。

order bycase声明一起使用:

SELECT email_VC, Status, Timestamp 
FROM Mytable
WHERE Timestamp  BETWEEN '#sdt#' AND '#edt#'
ORDER BY (case when event_vc = 'first' then 1
               when event_vc = 'second' then 2
               when event_vc = 'third' then 3
               else 4
           end)

问题2。

正确的语法是:

SELECT COUNT(DISTINCT email_VC) as CountEmail 
FROM   MyTable ;

如果您想计算不同的电子邮件,那么这将是正确的语法。