使用单个查询从表 A 中的值计算表 B 上的引用次数


Count number of resullts on table B from values in table A using single query

是否可以

从同一查询中的表 A 中提取的值计算表 B 中匹配的结果数?

例如-

tableA
--------------
color  | type
-------|------
blue   | car
red    | truck
orange | car
green  | car

-

tableB
--------------
color  | sku
-------|------
blue   | 1
red    | 2
orange | 3
green  | 4
orange | 5
green  | 6

问题 - 表 B 中有多少行与类型 = 汽车相关? 结果应返回 5。

使用两个查询和一些 PHP 这非常简单,我只是好奇这是否可以通过单个 MySQL 查询实现,以及它是否会更有效。

尝试以下查询

SELECT count(*) AS count 
FROM tableB b, tableA a 
WHERE b.color = a.color 
AND type = 'car';

将表格连接到与您的类型相对应的颜色上:

SELECT COUNT(*) FROM tableB JOIN tableA using (color) WHERE type = 'car';

http://sqlfiddle.com/#!2/760da5/1

我会尝试这样的事情:

SELECT COUNT(*)
FROM tableA, tableB
WHERE tableA.color=tableB.color
AND tableA.type='car';