我设法创建了以下“当天的引用”脚本。查看www.kakivi.de,您可以在右侧底部看到“kindersprüche”。 只要所有id都是连续的,当前查询就可以正常运行。当一个或多个id丢失时(因为记录已被删除),脚本显然也不会返回不存在的特定id的引用。问题:如何使下面提到的脚本“跳过”缺少的ID?提前感谢您的提示和建议。
SELECT id, spruch, vorname, nachname, datum_eintrag FROM kindersprueche
WHERE id=`datediff`(CURDATE(),'2015-02-22') MOD (SELECT COUNT(*)
FROM kindersprueche)
答案 0 :(得分:0)
你可以这样做:
SELECT id, spruch, vorname, nachname, datum_eintrag
FROM kindersprueche CROSS JOIN
(SELECT MAX(id) as maxid FROM kindersprueche) n
WHERE id >= datediff(CURDATE(), '2015-02-22') MOD (maxid + 1)
ORDER BY id
LIMIT 1;
请注意,我将条件更改为使用MAX(id)
而不是COUNT(*)
。我还将其移到FROM
子句中,因此更容易阅读查询。
编辑:
我认为解决此问题的方法是在引号中添加连续列。您可以在查询中执行以下操作:
SELECT id, spruch, vorname, nachname, datum_eintrag
FROM (select k.*, (@rn := @rn + 1) as seqnum
from kindersprueche cross join (select @rn := 0) params
) k CROSS JOIN
(SELECT count(*) as cnt FROM kindersprueche) n
WHERE id >= datediff(CURDATE(), '2015-02-22') MOD (cnt + 1)
ORDER BY id
LIMIT 1;
解决此问题的其他方法:
offset
和limit
来获取值。但是,您需要在应用程序层中进行设置,而不是仅在查询中进行设置。