假设我的表“MyTable”
中有以下列以下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查询中没有使用任何主键。
答案 0 :(得分:0)
问题1。
将order by
与case
声明一起使用:
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 ;
如果您想计算不同的电子邮件,那么这将是正确的语法。