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

时间:2015-01-23 13:35:33

标签: php mysql

是否可以从同一查询中从表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

问题 - tableB中有多少行与type = car有关?结果应该返回5.

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

3 个答案:

答案 0 :(得分:4)

尝试以下查询

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

答案 1 :(得分:2)

在表格中加入与您的类型相对应的颜色:

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

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

答案 2 :(得分:0)

我会尝试类似的事情:

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