首页 > 解决方案 > 如果它存在于另一个表中,则选择表中的值

问题描述

我正在尝试从找到特定公司名称的用户表中获取所有值。我还需要获取用户表中的行,其中相同的公司名称在另一个表中并且与用户表中的名称匹配

我有 2 个这样的表:

表:用户。

   USERNAME COMPANY EMAIL PHONE

表:调度员。

   USERNAME DISPATCH_CLIENT

我需要获取用户表中具有特定公司名称的所有行

我还需要获取 Users 表中的所有行,其中 Dispatch 表中的 USERNAME 和 DISPATCH_CLIENT 字段与 Users 表中的 USERNAME AND COMPANY 字段匹配。

我已经使用 EXISTS 在这里查看了一些问题,但它要么在我的情况下不起作用,要么我不够聪明,无法理解它。

这就是我目前所拥有的。

SELECT * 
    FROM Users
    WHERE Users.COMPANY = '" . $company . "'
    AND EXISTS 
    (SELECT USERNAME
        FROM Dispatchers WHERE DISPATCH_CLIENT = '" . $company . "')";

也尝试过这样做,但没有返回记录:

SELECT 
        *
        FROM 
        Users
        INNER JOIN
        Dispatchers
        ON Dispatchers.USERNAME = Users.USERNAME
        AND Dispatchers.DISPATCH_CLIENT = Users.COMPANY
        WHERE 
        Users.COMPANY = '" . $company . "'"

标签: mysql

解决方案


尝试这个

SELECT * 
    FROM Users
    WHERE Users.COMPANY = '" . $company . "'
    OR Users.USERNAME IN
    (SELECT USERNAME
        FROM Dispatchers WHERE DISPATCH_CLIENT = '" . $company . "')";

推荐阅读