php - Mysql 两张表,从一张表中选取所有值,比较是否存在,然后返回一个随机值

标签 php mysql random

我是新来的,刚来发帖提问,但我很久以前就一直在寻找答案。 尽管如此,我现在正在尝试做的事情是我没有找到正确的解决方案,或者如果我找到了它,我只是不知道如何使用它。

这是我的 SQL 查询:

$sql = "SELECT * FROM table_links AS link_id WHERE link_points > '1' 
AND NOT EXISTS (SELECT * FROM table_surf AS slink_id WHERE user_id = '$user'
AND surf_time = '$time') ORDER by RAND() LIMIT 1";

我正在尝试选择一个随机的 LINK ID(其中有点),并通过查看第二个表来检查该链接今天是否已全部显示给用户,其中所有 LINK ID 均保存为 SLINK ID,其中包含用户 ID 和时间最后一次访问的次数。

如果上次访问是在今天 ($time),那么它不应该返回任何内容。

我是 PHP/mysql 新手,但我正在努力学习,但在这种情况下,我不确定是否有可能实现像这样的复杂查询。

更新:根据 Akhil 的帖子,这似乎对我有用 -

$sql = "SELECT * FROM (SELECT RAND() temp, link_id FROM table_links WHERE link_points > '1' AND link_status NOT IN ('spam') AND NOT EXISTS (SELECT slink_id FROM table_surf AS links WHERE user_id = '$user' AND surf_time = '$time' AND slink_id = '$surflink')) a ORDER by temp LIMIT 1";

最佳答案

使用子查询

$sql = "select * from (SELECT RAND() temp, table_links.* FROM table_links AS link_id WHERE link_points > '1' 
AND NOT EXISTS (SELECT * FROM table_surf AS slink_id WHERE user_id = '$user'
AND surf_time = '$time')) a  ORDER by temp LIMIT 1";

看看是否能解决您的问题

关于php - Mysql 两张表,从一张表中选取所有值,比较是否存在,然后返回一个随机值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18159619/

相关文章:

php - Laravel - 删除 SQL 数据库中的重复行

php - MySQL 如何在同一个表上使用 WHERE 多列选择多行?

javascript - 如何将变量从 MySQL 传递到 SWF

mysql - 选择在其他表中没有匹配的行?

C# Mersenne Twister随机整数生成器实现(SFMT)蒙特卡洛模拟

Java石头剪刀布

php - 如何在laravel中获取另一个表中的非整数列

PHP MySQL 查询 - 添加

mysql - MYSQL Join 中的 REGEXP 工作不正常

ios - 生成随机数但未分配 UIButton