如果查询条件允许,我有以下查询从wpr_subscribers中获取行。
SELECT subscribers.* FROM wpr_subscribers subscribers, wpr_followup_subscriptions subscriptions WHERE
subscribers.id=subscriptions.sid AND
subscribers.active=1 AND
subscribers.confirmed=1 AND
subscriptions.type='autoresponder' AND
subscriptions.eid=$autoresponder_id AND
subscriptions.sequence = -2 OR
CEIL((subscriptions.last_date-subscriptions.doc)/86400) >= $message_index
查询返回每行中的两行。我该如何解决这个问题?
答案 0 :(得分:3)
SELECT DISTINCT subscribers.* FROM wpr_subscribers subscribers, wpr_followup_subscriptions
subscriptions WHERE
subscribers.id=subscriptions.sid AND
subscribers.active=1 AND
subscribers.confirmed=1 AND
subscriptions.type='autoresponder' AND
subscriptions.eid=$autoresponder_id AND
subscriptions.sequence = -2 OR
CEIL((subscriptions.last_date-subscriptions.doc)/86400) >= $message_index
DISTINCT关键字可以帮助您仅返回表中的唯一(不同)行。您确定查询中AND和OR的逻辑以及您现在收到的唯一数据确实是正确的。仅对于信息,AND运算符优先于OR,但是您可以使用括号覆盖它。
答案 1 :(得分:2)
可能是您的OR
声明
subscriptions.sequence = -2 OR
CEIL((subscriptions.last_date-subscriptions.doc)/86400) >= $message_index
无论OR
的范围是什么