Saya hanya ingin mendapatkan baris yang memiliki nilai NULL
dan beberapa nilai lain selain NULL
untuk kolom nama pengguna tertentu.
Jika kedua baris memiliki null untuk nama pengguna tertentu atau keduanya memiliki beberapa nilai selain nol maka seharusnya tidak muncul dalam output. Jika ada lebih dari dua baris untuk nama pengguna yang sama dengan nol dan beberapa nilai lainnya maka mereka akan muncul.
Di bawah ini adalah contoh sampel dan output. Bagaimana itu bisa dilakukan menggunakan kueri sql?
+----------+-------+
| username | col2 |
+----------+-------+
| a | abc |
| a | ef |
| b | null |
| b | null |
| c | der |
| c | null |
+----------+-------+
keluaran
+----------+------+
| username | col2 |
+----------+------+
| c | der |
| c | null |
+----------+------+
sql-server
t-sql
Peneliti IT
sumber
sumber
d, der
dan 2 dengand, null
?e, one
,e, two
dan 2 atau lebih dengane, null
?Jawaban:
Anda harus dapat menggunakan agregasi bersyarat untuk mendapatkan nama pengguna dengan nilai
col2
sekaligusnull
.Saya sarankan menggunakan klausa HAVING dengan kondisi. Kueri akan serupa dengan:
Lihat SQL Fiddle dengan Demo . Kueri ini mengelompokkan data Anda dengan setiap nama pengguna dan kemudian menggunakan logika kondisional untuk memeriksa apakah
col2
memenuhi kedua kondisi yang Anda inginkan - di manacol2
tidak nol dancol2
nol.Anda kemudian dapat menggunakan ini dalam subquery, dll untuk mendapatkan
username
dancol2
nilai:Lihat SQL Fiddle dengan Demo .
Jika Anda memiliki lebih dari satu
col2
baris dengan nilai keduanyanull
dan lainnya, maka Anda hanya perlu mengubahHAVING
sedikit klausa:Lihat SQL Fiddle dengan Demo
sumber
HAVING
klausa menjadi>=1
- sqlfiddle.com/#!3Solusi lain:
Dalam nada logis yang serupa:
Lagi:
sumber
Hanya cara lain untuk melakukannya:
sumber
Ini juga berfungsi. Demo SQL Fiddle
Saya mendapatkan C1 sebagai baris total untuk setiap nama pengguna, C2 sebagai baris null total untuk setiap nama pengguna dan saya membandingkan nilai-nilai ini nanti.
sumber
Saya akan menggunakan sub-kueri untuk memilih nama pengguna tersebut seperti:
sumber
Saya mencoba dengan yang ini ...
sumber
col2
tidak akan di output.