0

好的,所以我认为这个问题并不像标题所暗示的那么简单,但是这里有……我有这个查询:

SELECT age.*, job.id FROM age, job WHERE ((age.aid = job.id) AND (age.aid='$id'))

这基本上加入了两个表年龄和工作并获得匹配的行

但现在我需要在表年龄下找到存储在行猜测中的最常见年龄

数据库布局

表:年龄

行:援助 - 猜测

表:工作

行:id

根据我发现的搜索,我需要使用 count()

例如:

SELECT guess, COUNT(guess) AS countguess FROM age GROUP BY guess ORDER BY countguess DESC LIMIT 1

但是我怎样才能将这两个查询合并在一起呢?

4

4 回答 4

1

你可以做这样的事情

SELECT age.aid, job.id, age.guess, COUNT(age.guess) AS countguess 
FROM age, job 
WHERE ((age.aid = job.id) AND (age.aid='$id')) 
GROUP BY guess 
ORDER BY countguess DESC
于 2012-07-23T07:38:03.857 回答
0

当您说合并时,我认为您的意思是加入他们。当两个表之间存在关系时,您可以加入。

于 2012-07-23T07:36:56.690 回答
0

您可以使用UNION ALL来完成此操作

SELECT aid, id, guess, SUM(countguess ) AS countguess
FROM
(
 SELECT age.aid, job.id, guess, 0 AS countguess  
 FROM age
      INNER JOIN job
          ON age.aid = job.id AND 
             age.aid='$id'

 UNION ALL

 SELECT age.aid, 0 AS job.id, guess, COUNT(guess) AS countguess 
 FROM age 
 GROUP BY guess 
 ORDER BY countguess DESC 
 LIMIT 1
) a
GROUP BY aid

*注意:UNION ALL要求两个查询中的列数相同

于 2012-07-23T07:37:59.110 回答
0
SELECT age.*, job.id FROM age, job,
    (SELECT AVG(guess) AS countguess FROM age GROUP BY guess ORDER BY countguess DESC LIMIT 1) AS countguess
FROM job AS j
INNER JOIN age AS a
ON j.id = a.aid
WHERE a.aid = '{$id}'

我不确定这是否是你想要的?也许

SELECT age.*, job.id FROM age, job,
    (SELECT AVG(guess) AS countguess FROM age WHERE guess = a.guess GROUP BY '1') AS countguess
FROM job AS j
INNER JOIN age AS a
ON j.id = a.aid
WHERE a.aid = '{$id}'
于 2012-07-23T07:38:54.277 回答