MySQL 查询使用 2 个表中的数据

标签 mysql

我有一个用户表和一个付款表。我需要一个查询,列出在付款表中拥有 PaymentStatus=1 记录的用户。

它还必须仅列出具有特定 GroupID 的用户。 GroupID 将通过变量传递,但为了简单起见,我们可以将其称为 5。

记录的时间戳(TimeCompleted)也必须小于设定的时间戳,但我们可以称之为 10。

这些是表中的列(简化):

     Users: UserID, GroupID, UserName
  Payments: PaymentID, UserID, PaymentStatus, TimeCompleted

查询应选择字段 UserName。

几个小时前我确实问过类似的问题,但我问错了,我无法让查询正常工作。另外 - 如果用户有多个有效且活跃的付款,则它只能返回用户名一次。当我尝试这样做时,我做不到。

如果您愿意,您可以改进我当前的查询(除了最后一个有关复制返回用户的问题之外,它可以完成所有操作)。但我的做法可能完全错误:

         SELECT `Users`.`UserName`
           FROM `Users`
LEFT OUTER JOIN `Payments` ON `Users`.`UserID` = `Payments`.`UserID`
          WHERE `Payments`.`TimeCompleted` < 10
            AND `Payments`.`PaymentStatus` = 1
            AND `Users`.`GroupID` = 5

最佳答案

您想要使用 UserId 键连接两个表。 group by 子句将限制不同的用户名:

select UserName 
from Users inner join Payments on (Users.UserID = Payments.UserID)
where PaymentStatus = 1 and GroupID = 5 and TimeCompleted < 10 group by Users.UserID;

关于MySQL 查询使用 2 个表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3587941/

相关文章:

php - 我应该把这个脚本放在什么目录

mysql - 在 LEFT JOIN 中将 NULL 替换为默认值,但在 ROLLUP 中不会

php - 在mysql中使用GET插入数据

mysql - SQL - 选择关联记录

mysql - 应该创建什么索引?

php - 如何为访问数据库的应用程序分段数据库(也称为多个用户问题的单个数据库)?

PHP - 将下拉框保存到我的 mysql 数据库中

mysql - 使用现有数据将数据从 csv 加载到表中

mysql - 如何在mysql中建立排名?

mysql - 撤消 CTE(公用表表达式)