如何对MySQL数据库表进行查询?

dra*_*n66 2 mysql sql database

我被赋予了一项任务,将CPU使用率趋势显示为构建过程的一部分,该过程也进行回归测试.

每个单独的测试用例运行在表RegrCaseResult中都有一条记录.RegrCaseResult表看起来像这样:

id   projectName  ProjectType  returnCode  startTime   endTime           totalMetrics

1    'first'      'someType'   16           'someTime' 'someOtherTime'   222
Run Code Online (Sandbox Code Playgroud)

RegrCaseResult.totalMetrics是一个特殊键,它通过ThreadMetrics.id链接到另一个名为ThreadMetrics的表.

以下是ThreadMetrics的外观:

id   componentType   componentName   cpuTime   linkId

1    'Job Totals'    'Job Totals'    'totalTime' 34223
2    'parser1'       'parser1'       'time1'     null
3    'parser2'       'generator1'    'time2'     null
4    'generator1'    'generator1'    'time3'     null
------------------------------------------------------
5    'Job Totals'    'Jot Totals'    'totalTime' 9899
...
Run Code Online (Sandbox Code Playgroud)

具有compnentName'Job Totals'的行是RegrCaseResult表中的totalMetrics将链接到的行,'totalTime'是我在给定某个projectType时真正想要得到的.'Job Totals'实际上是其他记录的总和 - 在上面的例子中,是time1到time3的总和.表ThreadMetrics末尾的linkId可以链接回RegrCaseResult.id.

这些要求还规定我应该有办法强制执行条件,该条件仅包括在特定时期内具有一致返回代码的项目.这是我最初的问题来自如下:

我创建了以下简单表来展示我想要实现的目标:

id   projectName  returnCode

1    'first'    16
2    'second'   16
3    'third'    8
4    'first'    16
5    'second'   8
6    'first'    16
Run Code Online (Sandbox Code Playgroud)

基本上我想获得所有具有一致returnCode的项目,无论returnCode值是什么.在上面的示例中,我应该只获得一个"第一"的项目.我认为这很简单,但在数据库方面我很糟糕.任何帮助都会很棒.

我尽力说清楚.希望我已经实现了我的目标.

Gor*_*off 5

这是一个简单的方法:

select projectname
from table t
group by projectname
having min(returncode) = max(returncode);
Run Code Online (Sandbox Code Playgroud)

如果min()max()值相同,则所有值都相同(除非您有NULL值).

编辑:

'third'避开,您需要一些其他规则,例如拥有多个返回代码.所以,你可以这样做:

select projectname
from table t
group by projectname
having min(returncode) = max(returncode) and count(*) > 1;
Run Code Online (Sandbox Code Playgroud)

  • 那么......我突然感到愚蠢.我想这真的很简单.+1 (2认同)