sql >> データベース >  >> RDS >> Mysql

クエリ以外で使用するとエラーが発生する

    MySQLがEXCEPT構文をサポートしているとは思いません。 NOT INを使用してみてください またはLEFT JOIN

    SELECT s.sno 
    FROM students s    
    WHERE s.sno NOT IN 
    (
        SELECT t.sno 
        FROM take t 
        WHERE t.cno = 'CS112'
    );
    

    または

    SELECT s.sno 
    FROM students s    
        LEFT JOIN take t ON s.sno = t.sno
    WHERE IFNULL(t.cno, '') != 'CS112'
    

    更新

    私はあなたのデータをそのようにモックアップしました、そしてそれは正しく5から10を返します:

    create temporary table temp_students (sno int)
    
    insert into temp_students values (1)
    insert into temp_students values (2)
    insert into temp_students values (3)
    insert into temp_students values (4)
    insert into temp_students values (5)
    insert into temp_students values (6)
    insert into temp_students values (7)
    insert into temp_students values (8)
    insert into temp_students values (9)
    insert into temp_students values (10)
    
    create temporary table temp_take (sno int, cno varchar(50))
    
    insert into temp_take values (1, 'CS112')
    insert into temp_take values (2, 'CS112')
    insert into temp_take values (3, 'CS112')
    insert into temp_take values (4, 'CS112')
    
    SELECT s.sno 
    FROM temp_students s    
            LEFT JOIN temp_take t ON s.sno = t.sno
    WHERE IFNULL(t.cno, '') != 'CS112'
    


    1. これらのテーブル値パラメーターを強く入力する

    2. OracleAppsR12.2でTLSを有効にする

    3. MINまたはMAXにnull値を含めるにはどうすればよいですか?

    4. 日付/時刻からSQLServerの文字列の例へのCONVERT()