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
为了让您了解我在这里要实现的目标,我设置了一个非常简单的邮件系统,用户可以在其中 "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