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