【发布时间】:2016-06-24 00:32:48
【问题描述】:
我有 2 张桌子:
医学
CREATE TABLE med
(id_med INT AUTO_INCREMENT PRIMARY KEY,
name_m VARCHAR(50),
surname_m VARCHAR(50),
spec VARCHAR(50),
UNIQUE (surname_m,name_m));
即
CREATE TABLE viz
(id_m INT NOT NULL,
id_p INT NOT NULL,
id_c INT NOT NULL,
dt DATETIME)
我需要为每个规范选择全名和 count(id_p) 的前 3 个值。 以下查询给了我第一个值,但我只是看不出下一步该做什么。
(SELECT distinct(concat(name_m,' ',surname_m)) AS fullname, COUNT(id_p) as no, (select distinct(spec))
FROM med m JOIN viz v ON m.id_med = v.id_m
WHERE year(dt)=2005
GROUP BY spec
ORDER BY spec;
任何答案将不胜感激。谢谢。
结果应该是这样的:
fullname count(id_p) spec
name1 1000 a
name2 900 a
name3 890 a
name4 2000 b
name5 600 b
name6 200 b
name7 100 c
name8 60 c
name9 59 c
....
我目前的结果显示:
fullname count(id_p) spec
name1 1000 a
name4 2000 b
name7 100 c
【问题讨论】:
-
您能否在表格中填写数据并举例说明您希望查询返回的内容。
-
那么现在根据您当前的查询,您的结果是什么?
-
您的原始数据是什么样的?