Select 从 MySQL 连接两列?

Select from MySQL by connecting two columns together?

为了让您了解我在这里要实现的目标,我设置了一个非常简单的邮件系统,用户可以在其中 "Star" 接收或发送邮件(稍后阅读或保存等) ...)。该系统非常简单,使用与下面类似的 table 设计,请注意我删除了一些与此处无关的列:

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。 正如您可能解决的那样 - 如果仅分别查看已接收或已发送的消息,我可以轻松检索加星标的消息。虽然,这里的问题是我想在每个用户的单个文件夹中显示所有 "Starred" 消息,显然这需要找出哪个用户已经为消息加星标,或者通过连接 recip_account & recip_starred OR sender_account & sender_starred 并根据用户 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