当前位置:  开发笔记 > 编程语言 > 正文

SQLite Query使用嵌套的SELECT

如何解决《SQLiteQuery使用嵌套的SELECT》经验,为你挑选了1个好方法。

我正在尝试从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文件.我明白错了什么?

谢谢!



1> Sander Rijke..:

您应该始终使用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
)


"应始终使用WHERE xxx IN"语句有点强大且不合理.有些情况下,嵌套选择应该采用其他形式(子查询也可以驻留在查询的SELECT和FROM部分),最好通过以下SQLite教程进行描述:https://www.techonthenet.com/sqlite/subqueries.php
推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有