【问题标题】:SQL double comparisonSQL双重比较
【发布时间】:2011-08-02 10:32:25
【问题描述】:

假设我有以下 SQL 列:

现在,我想做以下事情: 在 col_1 中,我的值为“一”。如果我检查一下,我在 col_2 中得到了哪些相应的值,我会找到“二”和“三”。所以结果将是“二”和“三”。但是从这个结果集中,我只想拥有那些在col_1 中使用的,在col_2 中具有相应值“一”的那些。所以: col_1 中的“二”,确实col_2 中有“一”,但三没有。因此,从 {'two', 'three'} 的结果集中只剩下 {'two'}。

如何使用 MySQL 进行这样的双重检查查询?

提前致谢!

【问题讨论】:

    标签: sql comparison double


    【解决方案1】:

    这是通过JOIN在给定条件下将一个表分配给自身来完成的。假设你的表名是table:

    SELECT t1.col_1
    FROM table t1 JOIN table t2 ON t1.col_2=t2.col_1
    WHERE t1.col_1=t2.col_2 
    AND t1.col_1='one';
    

    这给出了:

     col_1 
    -------
     one
    (1 row)
    

    【讨论】:

    • 这会返回一个错误:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“table t1 JOIN table t2 ON t1.col_2=t2.col_1 WHERE t1.col_1=t2.col_2 AND t1.col_”附近使用正确的语法
    • table 更改为您的实际表名。
    • :DI 做了 ^^ 我什至,绝对肯定的是,创建了一个名为 table 的表,其中使用了此处使用的实际列名,是给定示例的复制品,但它仍然没有不行。
    • 哦,现在我知道出了什么问题:一定是table,而不是桌子。 (带有`符号)表可能是一个保留名称。
    猜你喜欢
    • 2012-10-09
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    相关资源
    最近更新 更多