0

这是我的数据库结构(简化):

Subscriptions (id, day, user_id)
MagazineEvents(id, magazine_id, subscription_id, ..., is_even_week, is_odd_week)
Magazine(id, name, ...)

杂志可以在 week_number%2 == 0(偶数)或 == 1(奇数)时出刊,也可以每周出刊(偶数和奇数为 1)或从不(偶数和奇数为 0)。

我需要列出每个订阅者的正确杂志​​,所以在这里我做了什么:

SELECT s.* FROM Subscriptions s
LEFT JOIN MagazineEvents me ON me.subscription_id = s.id
LEFT JOIN Magazine p ON m.id = me.magazine_id
WHERE ...

WHERE就是我卡住的地方,我需要根据订阅日期退回一本或不退回一本杂志,我有SQL获得一周模数的方法:DATE_FORMAT(day, "%v") % 2但就是这样,我不能再进一步了。

4

1 回答 1

1

像梯子一样的用例

CASE when (DATE_FORMAT(day, "%v") % 2) = 0 then 'even' else 'odd' end

在查询中

于 2013-10-16T13:33:34.440 回答