簡體   English   中英

MySQL的兩個表,從一個表中選擇所有值,比較是否存在,然后返回一個隨機值

[英]Mysql two tables, select all values from one table, compare if exists and then return One random value

我是發布問題的新手,但是很久以前我一直在尋找答案。 仍然是我現在想做的事情,找不到合適的解決方案,或者如果找到它,我只是不知道如何使用它。

這是我的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鏈接WHERE user_id ='$ user'AND surf_time ='$ time'AND slink_id ='$ surflink'))通過溫度限制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";

看看是否能解決您的問題

如果您的鏈接ID列在表table_links稱為my_link_id,則使用NOT IN像這樣

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

$sql = "SELECT * FROM table_link1 
        WHERE id IN (SELECT id FROM table_link2) ORDER BY RAND()" LIMIT 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM