Php 在MySQL中比较INT(11)和FLOOR()结果
我有一个名为quotes的表,我想创建一个MySQL查询,从随机引用中返回数据。我在互联网上搜索,找到了如何创建一个从1到表中引号数的随机数:Php 在MySQL中比较INT(11)和FLOOR()结果,php,mysql,Php,Mysql,我有一个名为quotes的表,我想创建一个MySQL查询,从随机引用中返回数据。我在互联网上搜索,找到了如何创建一个从1到表中引号数的随机数: SELECT FLOOR(RAND() * (SELECT ((SELECT COUNT(*) FROM DAILYS) - 1))) + 1 AS RANDNUM; 我已经测试过了,它可以正常工作,每次在我需要的范围内返回一个随机数 问题是我需要从两个表中获取信息,引用和作者。这在以前是行之有效的: SELECT QUOTES.QUOTE, AUTH
SELECT FLOOR(RAND() * (SELECT ((SELECT COUNT(*) FROM DAILYS) - 1))) + 1 AS RANDNUM;
我已经测试过了,它可以正常工作,每次在我需要的范围内返回一个随机数
问题是我需要从两个表中获取信息,引用和作者。这在以前是行之有效的:
SELECT QUOTES.QUOTE, AUTHORS.NAME, AUTHORS.LINK
FROM QUOTES JOIN AUTHORS ON QUOTES.AUTHOR_ID = AUTHORS.ID
WHERE QUOTES.ID =
(SELECT QUOTE_ID FROM DAILYS WHERE DAY = CURDATE());
现在我想做完全相同的事情,但不是比较引号ID和今天的ID,而是将其与随机数进行比较。根据phpMyAdmin,ID列中的类型是“int(11)”,所以我不知道它可能有什么问题。谢谢你抽出时间 您的第一个查询将生成一个整数。你不能把它和约会做比较(假设这就是你想要做的) 我使用以下答案将您的问题结合起来: 我还没有测试过这个,但我相当有信心它会工作(如果我正确理解您的数据库设计的话) 编辑:根据我引用的页面上的另一个答案,“偏移量为零索引”,因此我删除了“+1”。什么可能有问题?
SELECT QUOTES.QUOTE, AUTHORS.NAME, AUTHORS.LINK
FROM QUOTES
JOIN AUTHORS ON QUOTES.AUTHOR_ID = AUTHORS.ID
WHERE QUOTES.ID =
(SELECT QUOTE_ID FROM DAYLYS ORDER BY DAY LIMIT
(SELECT FLOOR(RAND() * (SELECT ((SELECT COUNT(*) FROM DAILYS) - 1)))),1);