0

Table : tbl_email_scheduler
在这里date_to_send = '2013-10-12' AND send_status = NULL。(在创建表时,我已将 send_status 默认为 NULL)

mysql:

SELECT
  id,
  to_users,
  subject,
  message,
  product_id,
  date_to_send,
  send_status,
  status,
  createdate
FROM tbl_email_scheduler
WHERE date_to_send = '2013-10-12'   

给我结果

但是当我

SELECT
  id,
  to_users,
  subject,
  message,
  product_id,
  date_to_send,
  send_status,
  status,
  createdate
FROM tbl_email_scheduler
WHERE date_to_send = '2013-10-12'
    and send_status != 'Y'

它给了我空的结果为什么?请回答。

4

4 回答 4

2

因为数据库服务器NULL什么都没有,试试这个

SELECT 
  id,
  to_users,
  subject,
  message,
  product_id,
  date_to_send,
  send_status,
  status,
  createdate
FROM tbl_email_scheduler 
WHERE date_to_send = '2013-10-12' and (send_status !='Y' OR send_status IS NULL)
于 2013-10-12T06:04:48.543 回答
0

我认为你的错误在 mysql '<>' 中不相等

尝试这个

SELECT id, to_users, subject, message, product_id, date_to_send, send_status, STATUS , createdate FROM tbl_email_scheduler WHERE date_to_send = '2013-10-12' AND send_status <> 'Y' LIMIT 0 , 30
于 2013-10-12T05:45:36.000 回答
0

NULL与产量的任何比较NULL。您应该在处理时根据需要使用以下运算符NULL

x IS NULL- 确定左手表达式是否为 NULL,

x IS NOT NULL- 像上面一样,但相反,

x <=> y- 以安全的方式比较两个操作数是否相等,即 NULL 被视为正常值。

于 2013-10-12T05:47:17.307 回答
0

在您的第二个查询中,您正在定义 send_status 是否不是 Y。
这意味着如果 send_status 如果为 NULL,它将不会获取任何内容。

你应该像这样尝试

SELECT
  id,
  to_users,
  subject,
  message,
  product_id,
  date_to_send,
  send_status,
  status,
  createdate
FROM tbl_email_scheduler
WHERE date_to_send = '2013-10-12'
    and (send_status != 'Y' AND send_status IS NOT NULL)

这将首先获取所有非空结果并应用不等于 Y 条件

于 2013-10-12T06:08:12.950 回答