mysql - 我该如何解决这个mysql?用php还是mysql做?

标签 mysql

我有一个查询...

 SELECT m.msgFrom, m.msgTo, m.msgID, m.subject, m.dateTime, a.username 
 FROM mailbox m 
 JOIN accounts a ON (m.msgFrom = a.id) 
 WHERE msgTo = $user 
      OR msgFrom = $user 
      AND parentID = 0 
 ORDER BY dateTime DESC 
 LIMIT 250

是否可以更改此查询,以便 ON 根据 msgTomsgFrom 的值而变化。

我有一个用户变量。如果用户变量等于msgTo,则获取username,其中id等于msgFrom。如果用户变量等于msgFrom,则获取username,其中id等于msgTo

我希望我解释得足够好?

最佳答案

您应该能够在 ON 子句中使用 IF 语句。这将与对方用户的帐户连接。 (即,如果消息来自$user,则用户名将用于接收用户,如果消息发送至 $user,则 username 将用于发送用户。)

SELECT m.msgFrom, m.msgTo, m.msgID, m.subject, m.dateTime, a.username 
FROM mailbox m JOIN accounts a ON a.id=IF(msgTo=$user, msgFrom, msgTo)
WHERE msgTo = $user OR msgFrom = $user AND parentID = 0 
ORDER BY dateTime DESC LIMIT 250

关于mysql - 我该如何解决这个mysql?用php还是mysql做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8948512/

相关文章:

php - 从 mysql 表填充的自动完成的输出

mysql innodb缓冲池不能分配超过43G

php - 为 MongoDB php 创建实时 MySQL 解析器

mysql - 如何在 spring data jpa 中全局限制选择计数?

php - 仅在一个 SQL 查询中检索所有类别、子类别、子子类别等的完整列表

PHP&MySQL : Combine more lines and put it in array

mysql - 使用左连接 mysql 进行分组 concat 和 sum

php - Mysql在缺少html图像时创建双插入

mysql - 选择按另一列分组的最大日期

php - 使用 PDO 获取 if 语句内部