通过连接两列来选择MySQL


Select from MySQL by connecting two columns together?

为了让您了解我在这里试图实现的目标,我设置了一个非常简单的邮件系统,用户可以在其中"标记"接收或发送的邮件(以便稍后阅读或保存等…)。这个系统非常简单,与下面的表设计相似,请注意,我已经删除了一些不相关的列:

Random Digit
User ID of Recipient
User ID of Sender
Message
If recipient has starred message (0 for no, 1 for yes)
If sender has starred the message (0 for no, 1 for yes)
mail_id  |  recip_account  |  sender_account  |  message  |  recip_starred  |  sender_starred 
   1            5                 10             Hello          0                  1
   2            10                 5            A Reply         0                  1
   3            10                20             Test           1                  0
   4            15                20             Message        1                  1

从上面的例子中,如果我们获得用户ID 10的星号消息,查询将显示消息ID的1, 3。正如您可能会发现的那样-如果只查看已接收或已发送的消息,我可以轻松地检索带星号的消息。虽然,这里的问题是我想在每个用户的单个文件夹中显示所有"带星号"的消息,显然,这需要找出哪个用户已经为消息加了星号,或者通过连接recip_account &或send_account &sender_* *并根据用户ID引用它?

有没有人能帮我一下,目前我检索结果的方式如下:

$sql2 = "SELECT * FROM `ap_mail_system` WHERE `recip_account` = '$user_id' OR `sender_account` = '$user_id' ORDER BY `sent_date` DESC LIMIT 0, 12"; 

你只需要一点布尔逻辑在你的WHERE子句。试一试:

SELECT * FROM `ap_mail_system` WHERE (`recip_account` = '$user_id' AND `recip_starred` = 1) OR (`sender_account` = '$user_id' AND `sender_starred` = 1) ORDER BY `sent_date` DESC LIMIT 0, 12