Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        2年前关闭。
                                                                                            
                
        
我有3张桌子。用户表。一张诗桌。一个表格,用于跟踪已将哪些诗歌通过电子邮件发送给哪些用户。

tblUser  | tblEmailed  | tblPoems
-------  | ----------- | --------
userid   | userid      | poemid
username | poemid      | poemname
etc      | date        | etc


我想编写一个MySQL查询,该查询选择一个今天未通过电子邮件发送给诗歌的用户ID,并选择一个他们以前从未收到过的Poemid。

有人能帮我吗?

最佳答案

您需要做的第一件事就是确定今天没有通过电子邮件发送过的用户。为此,您可以使用类似以下的内容:

SELECT u.userid FROM tblUser u LEFT JOIN tblemailed e on e.userid = u.userid WHERE e.date == CURDATE() AND COALESCE(e.poemid, '') == '' LIMIT 1

然后,我们将需要该user_id来查找他们尚未收到的诗:

SELECT p.poemid FROM tblPoems p WHERE p.poemid NOT IN (SELECT poemid FROM tblEmailed WHERE userid == user_id) LIMIT 1

其中user_id是第一个查询的用户。

08-19 15:51