Mysql:如何访问当前行的列值

时间:2014-12-03 21:56:00

标签: mysql sql

所以我有一个包含列的mysql表 部件号(varchar)和客户#(varchar)

我正在尝试创建第三列,其中包含部分#的唯一配对以及客户#的列表。

select Part_num, Cust_num, 
  (select count(*) from my_table where Part_num = (The current value of Part_num) 
    and Cust_num in (select Cust_num from my_table where Part_num = 'XYZ123')) as Pairs
from my_table;

我想弄清楚有多少Customer#包含当前部分。如果我替换(Part_num的当前值)Part#说“ABC789”,那么查询正确地识别它们是X对的数量,但我需要为每个Part#动态地执行此操作。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您应该在此处选择部件号,使用COUNT()聚合功能,以及按客户编号分组,这样您就可以获得与该部件相关的每个客户的数量。

看起来像这样:

SELECT partNumber, COUNT(*) AS numCustomers
FROM myTable
WHERE partNumber = 'ABC789';

如果客户编号可能出现多次,并且您需要不同的客户,则可以将distinct customerNumber放入COUNT子句中:

SELECT partNumber, COUNT(distinct customerNumber) AS numCustomers
FROM myTable
WHERE partNumber = 'ABC789';

答案 1 :(得分:0)

您可以参考(correlated) subquery中的外部查询,只需使用表别名。

SELECT t.part_num, 
       t.cust_num, 
       ( 
              SELECT Count(*) 
              FROM   my_table t2
              WHERE  t2.part_num = t.part_num
              AND    cust_num IN 
                     ( 
                            SELECT cust_num 
                            FROM   my_table 
                            WHERE  part_num = 'XYZ123')) AS pairs 
FROM   my_table t;