Sql 如何解决

Sql 如何解决,sql,Sql,我要学习sql,但还没有解决这个问题,有人能帮我吗 展示非优胜者的参赛者 删除所有非优胜者 谢谢 不在示例中 1. SELECT * FROM runners WHERE id NOT IN (SELECT id_winner FROM races); 2. DELETE FROM runners WHERE id NOT IN (SELECT id_winner FROM races); 不存在这样的例子 1. SELECT * FROM runners a WHERE NOT EXIS

我要学习sql,但还没有解决这个问题,有人能帮我吗

  • 展示非优胜者的参赛者

  • 删除所有非优胜者


  • 谢谢

    不在示例中

    1. SELECT * FROM runners WHERE id NOT IN (SELECT id_winner FROM races);
    
    2. DELETE FROM runners WHERE id NOT IN (SELECT id_winner FROM races);
    
    不存在这样的例子

    1. SELECT * FROM runners a WHERE NOT EXISTS (SELECT 1 FROM races WHERE id_winner = a.id);
    
    2. DELETE a FROM runners a WHERE NOT EXISTS (SELECT 1 FROM races WHERE id_winner = a.id);
    

    到目前为止,您尝试了哪些查询来解决这个问题?对于空值,NOT in有点危险。是的,他的要求很简单。对于较大的数据集,NOT EXISTS更好。警告是关于空值,而不是数据集的大小。(此外,目前大多数dbms产品都以同样的方式进行优化。)
    1. SELECT * FROM runners a WHERE NOT EXISTS (SELECT 1 FROM races WHERE id_winner = a.id);
    
    2. DELETE a FROM runners a WHERE NOT EXISTS (SELECT 1 FROM races WHERE id_winner = a.id);