我正在尝试从db中选择cpu_time,但时间必须与其他一些标准相对应 - 即build_version,test_letter,design_index,multi_thread和test_index
我认为可行的是(内部SELECT DISTINCT
语句自行运行):
set query [db eval \
{SELECT DISTINCT cpu_time WHERE cpu_time IN
(SELECT DISTINCT mgc_version, test_type_letter, design_index,
test_index, cpu_time, multi_thread
FROM TestExecutions WHERE test_type_letter
BETWEEN $testletter AND $testletter)}]
***注意 - 这给了我一个“没有这样的列:cpu_time”错误
我的第一个SELECT将从不同的返回中提取所有项目。然后,从每次返回,我想只为每种类型的$ testletter使用cpu_time。
这用于生成仅具有cpu_time的CSV文件。我明白错了吗?
谢谢!
答案 0 :(得分:25)
您应始终使用WHERE xxx IN (SELECT xxx FROM ...)
,而不是在内部选择中选择多个项目。您可以在外部选择中添加这些,例如:
SELECT DISTINCT
mgc_version,
test_type_letter,
design_index,
test_index,
cpu_time,
multi_thread
FROM TestExecutions
WHERE cpu_time IN
(
SELECT DISTINCT cpu_time
FROM TestExecutions
WHERE test_type_letter BETWEEN $testletter AND $testletter
)