我有两个桌子:玩具和游戏。
+--------------------+------------------+ | Field | Type | +--------------------+------------------+ | toy_id | int(10) unsigned | | little_kid_id | int(10) unsigned | +--------------------+------------------+ +--------------------+------------------+ | Field | Type | +--------------------+------------------+ | game_id | int(10) unsigned | | little_kid1 | int(10) unsigned | | little_kid2 | int(10) unsigned | | little_kid3 | int(10) unsigned | +--------------------+------------------+
一个小孩可以有多个玩具。一个小孩可以一次参加多个游戏。
我想要一个查询,该查询将为我提供little_kid涉及的玩具和游戏的总数。
基本上,我想要这两个查询的总和:
从little_kid_id = 900的玩具中选择COUNT(*); 从游戏中选择COUNT(*),其中little_kid1 = 900 或little_kid2 = 900 或little_kid3 = 900;
是否可以在单个SQL查询中获得它?显然,我可以通过编程的方式对它们进行汇总,但这并不是很理想。
(我意识到人为的例子使模式看起来效率低下。让我们假设我们无法更改模式。)
包装它们并使用子查询:
SELECT (SELECT COUNT(*) FROM Toys WHERE little_kid_id = 900)+ (SELECT COUNT(*) from Games WHERE little_kid1 = 900 OR little_kid2 = 900 OR little_kid3 = 900) AS SumCount
瞧!