如何比较MySQL中同一字段的两个不同值?

如何比较MySQL中同一字段的两个不同值?,mysql,sql,database,Mysql,Sql,Database,我在MySQL中有3个表,代表通过目录销售零件的供应商: 供应商(sid、sname、地址),sid为主键(整数) 部件(pid、pname、color),pid为主键(整数) 目录(sid、pid、cost),sid和pid是主键 现在,我正在尝试选择供应两种不同颜色零件的供应商的名称。到目前为止,我只找到了如何选择销售多个零件的供应商的sid,代码如下: SELECT sid FROM catalog GROUP BY sid HAVING COUNT(sid) > 1; 但是,我不

我在MySQL中有3个表,代表通过目录销售零件的供应商:

供应商(sid、sname、地址),sid为主键(整数)

部件(pid、pname、color),pid为主键(整数)

目录(sid、pid、cost),sid和pid是主键

现在,我正在尝试选择供应两种不同颜色零件的供应商的名称。到目前为止,我只找到了如何选择销售多个零件的供应商的sid,代码如下:

SELECT sid
FROM catalog
GROUP BY sid
HAVING COUNT(sid) > 1;

但是,我不知道如何从特定供应商中选择两个零件并比较它们的颜色值。似乎我需要某种子查询,但我不确定该如何进行。如果您能提供正确方向的指导,我们将不胜感激。

为此,您可以使用自连接,声明PID必须相同,但颜色必须不同,如下所示:

SELECT s.sid, s.sname, p.*
FROM (
    SELECT DISTINCT a.pid, a.color, b.color
    FROM parts AS a
    JOIN parts AS b ON b.pid == a.pid AND b.color <> a.color
) AS p
JOIN catalog AS c ON c.pid == p.pid
JOIN suppliers AS s ON s.sid == c.sid
在任何一种情况下,周围的查询和联接都应该为您提供一个准确的列表

我希望这有帮助


-C§

如何比较它们的颜色值?红色的螺丝刀和黄色的锤子?不管零件是什么,我只关心颜色字段是否相同,比如“红色”、“黄色”等。我只是不知道如何比较两个不同零件条目的相同字段。是的,但是比较的目的是什么?sql通常不允许在没有更高级查询(如自联接)的情况下比较不同记录中的字段。这是大学四年级的作业,因此实际应用可能很少。问题是:“找到提供两个不同颜色零件的每个供应商的名称。”三个表格如我上面所述。这是有用的信息。我需要做一些小改动,但这正是我需要弄清楚如何解决问题的原因。非常感谢@用户2023740不客气。这就是我们在这里的目的=D
SELECT s.sid, s.sname, p.*
FROM (
    SELECT DISTINCT pid, color
    FROM parts
    GROUP BY pid, color
) AS p
JOIN catalog AS c ON c.pid == p.pid
JOIN suppliers AS s ON s.sid == c.sid