sql >> Database teknologi >  >> RDS >> Sqlserver

Forkert output i FULL OUTER JOIN-forespørgslen

Baseret på det, du har sagt i kommentarfeltet, tror jeg, du skal ændre ét kodestykke...

  • Det, jeg ønsker, er, at kortet ikke skal have field14 som 'Test card'


(t1.field14 <> 'Test Card' and t1.field14 is null)
 

=>

(t1.field14 <> 'Test Card'  OR  t1.field14 is null)
 


Opbyg en logiktabel for at kontrollere, om du virkelig vil have AND eller hvis du vil have OR

field14 | (field14 <> 'Test Card') | (t1.field14 is null) | A OR B | A AND B -------------------------------------------------------------------------------- 'Test Card' | FALSE | FALSE | FALSE | FALSE NULL | NULL | TRUE | TRUE | FALSE 'Any Card' | TRUE | FALSE | TRUE | FALSE


REDIGER Følg op for at kommentere

Brug OR i koden ovenfor kan ikke give TRUE når Field14 er 'Test card' . Begge test giver FALSE og derfor skal resultatet være FALSE .

Du skal bryde tingene ned i etaper. Fejlretning bør udføres ved at teste stykker ad gangen og gradvist bevise, hvad der virker for at isolere, hvad der ikke gør. Forsøg aldrig at ordne alt på én gang, gribe tingene metodisk an.

Kør denne test...

SELECT
  *,
  CASE WHEN field14 <> 'Test Card'                     THEN 1 ELSE 0 END     Test1,
  CASE WHEN field14 IS NULL                            THEN 1 ELSE 0 END     Test2,
  CASE WHEN field14 <> 'Test Card' OR  field14 IS NULL THEN 1 ELSE 0 END     1_OR_2,
  CASE WHEN field14 <> 'Test Card' AND field14 IS NULL THEN 1 ELSE 0 END     1_AND_2
FROM
  tblCustomer
 



  1. hvordan man håndterer MYSQL-forespørgselsopdatering som denne

  2. Hvordan får man mysql MEMORY ENGINE til at gemme flere data?

  3. Sådan finder du alle forbundne undergrafer i en urettet graf

  4. Forbind tomcat og mysql i docker-compose