这个有点棘手,至少我要解释一下,所以请不要生气,如果你不明白 - 这很可能是由于我的解释不好造成的。
我想从我的主SELECT中再获取一列,它将代表另一个表中的行数,适合主记录的id。
所以,想象一下我选择的主表。我将其称为 main 。
我想从主要中选择,主要是:
SELECT * FROM main ORDER BY c1 ASC LIMIT 5
另外,我需要为返回的每一行添加一个额外的列,它表示来自 side 表的行数,与id匹配:
SELECT COUNT(*) FROM side WHERE m_id = main_id
也许一个例子会告诉你更多
id data1 data2 id m_id ...
main ----|-------|------- side -----|------|-----
1 aa ab 1 1
2 xx yy 2 2
3 az bz 3 1
4 1
5 3
6 2
7 1
8 1
9 2
expected result:
id data1 data2 num
----|-------|-------|------
1 aa ab 5
2 xx yy 3
3 az bz 1
答案 0 :(得分:2)
添加计数的一种简单方法是使用相关子查询:
SELECT m.*,
(select count(*) from side s where s.m_id = m.main_id) as side_cnt
FROM main m
ORDER BY c1 ASC
LIMIT 5;
您也可以通过更改from
子句来执行此操作。但是,此方法仅影响查询的select
部分。
答案 1 :(得分:0)
您应该可以将其作为子查询来执行:
SELECT m.*, ( SELECT COUNT(*) FROM side WHERE m_id = m.main_id ) as num FROM main m ORDER BY c1 ASC LIMIT 5
这基本上为每个结果运行一个特殊查询,计算匹配结果的数量并将其显示在“num”列中。