R或Mysql:如果列的值不存在于同一数据帧的另一行中,则将其更改为null

时间:2017-12-25 14:52:28

标签: mysql r

我正在从mysql数据库中检索一个表到r但是我需要将class1和class2 的值更改为null 如果它们中的值不在列学校中< / strong>即可。我无法做到这一点。有没有办法在R中或在MySQL中作为选择查询?换句话说,将这些值转换为null,这些值不会出现在同一个表的另一行中。

这是我的表:

Here is my table:

以下是我想要检索它的方式: And here is how I want to retrieve it as:

1 个答案:

答案 0 :(得分:1)

这应该有效:

SELECT
    s.school,
    CASE WHEN q1.class1 IS NOT NULL THEN NULL ELSE s.class1 END AS class1,
    CASE WHEN q2.class2 IS NOT NULL THEN NULL ELSE s.class2 END AS class2
FROM
    schools AS s
    LEFT JOIN (SELECT DISTINCT class1 FROM schools WHERE class1 NOT IN (SELECT DISTINCT school FROM schools)) AS q1 ON s.class1 = q1.class1
    LEFT JOIN (SELECT DISTINCT class2 FROM schools WHERE class2 NOT IN (SELECT DISTINCT school FROM schools)) AS q2 ON s.class2 = q2.class2

    ORDER BY
        s.school

SQLFiddle DEMO