主键搜索的结果不止一个

时间:2017-03-07 21:33:10

标签: mysql database

我的MySQL查询一直存在问题。我目前正在尝试制作一个程序,该程序将使用魔术技巧随机填充桥接表以进行特定预订。

经过几个小时的程序,我把问题缩小到这行代码。

SELECT *
FROM avaliable_tricks WHERE table_id = FLOOR(RAND() * 144)+1;

我试图使用随机生成的数字来检索技巧信息,该数字等于其主键。 应该只抓取一个条目,因为它使用主键,主键是唯一值。实际上它抓住0,1,2或更多条目没有押韵或理由。 IE浏览器。它刚刚返回4行,主键分别为2,5,47和107。

除了它是一个随机生成的数字之外,我无法想到它为什么不起作用的任何理由。

我的代码中是否存在固有错误?

编辑: 这是在我的临时桌上运行的DESCRIBE。

table_id    int(11) NO  PRI     auto_increment
show_trick_id   int(11) YES         
trick_length    int(11) YES         
recommended_age int(11) YES         

1 个答案:

答案 0 :(得分:0)

对表中的每一行执行一次RAND()并生成不同的值。如果您只想获得一个随机数,则可以使用子查询(派生表);

SELECT *
FROM avaliable_tricks 
CROSS JOIN (SELECT FLOOR(RAND() * 144)+1 as rnd) r
WHERE table_id = r.rnd;

或者只使用变量

SET @rnd = SELECT FLOOR(RAND() * 144)+1;
SELECT *
FROM avaliable_tricks 
WHERE table_id = @rnd;