Penjelasan sederhana
OR artinya "atau". Sebuah baris lolos kalau minimal salah satu syarat terpenuhi. Kalau dua-duanya terpenuhi, barisnya tetap muncul sekali saja.
Berbeda dengan AND yang mempersempit hasil, OR justru memperluas hasil karena memberi lebih banyak jalan bagi baris untuk lolos.
Sintaks
WHERE kondisi1 OR kondisi2;
| Bagian | Keterangan |
|---|---|
kondisi1 OR kondisi2 | Cukup salah satu yang benar. |
Tanda [kurung siku] berarti bagian opsional. Kata kunci SQL tidak membedakan huruf besar-kecil, tapi menulisnya dengan huruf besar membuat query lebih mudah dibaca.
Contoh OR
Data contoh: karyawan
Tabel karyawan
| id | nama | dept_id | kota | gaji | tgl_masuk | atasan_id |
|---|---|---|---|---|---|---|
| 1 | Andi Pratama | 3 | Bandung | 12500000 | 2019-03-11 | NULL |
| 2 | Bunga Lestari | 1 | Jakarta | 9800000 | 2020-07-01 | NULL |
| 3 | Candra Wijaya | 3 | Bandung | 8200000 | 2021-02-15 | 1 |
| 4 | Dewi Anggraini | 2 | Jakarta | 7500000 | 2022-05-09 | 6 |
| 5 | Eko Saputra | 1 | Jakarta | 6900000 | 2023-01-16 | 2 |
| 6 | Fajar Nugroho | 2 | Surabaya | 11000000 | 2018-09-03 | NULL |
| 7 | Gita Permata | 3 | Jakarta | 8200000 | 2023-08-21 | 1 |
| 8 | Hendra Gunawan | NULL | Medan | 5500000 | 2024-04-02 | NULL |
SELECT nama, kota, gaji
FROM karyawan
WHERE kota = 'Bandung'
OR gaji > 10000000;
Hasil 3 baris
| nama | kota | gaji |
|---|---|---|
| Andi Pratama | Bandung | 12500000 |
| Candra Wijaya | Bandung | 8200000 |
| Fajar Nugroho | Surabaya | 11000000 |
Fajar ikut muncul walau bukan dari Bandung, karena gajinya di atas 10 juta.
Cara kerjanya, langkah demi langkah
FROM karyawan: 8 baris diambil.- Setiap baris dicek: apakah kotanya Bandung, atau gajinya di atas 10 juta?
- Andi dan Candra lolos karena tinggal di Bandung. Fajar lolos karena gajinya 11 juta, walaupun ia di Surabaya.
- Hasilnya 3 orang.
Dipakai untuk apa di kantor?
- Mencari pesanan yang statusnya "batal" atau "retur".
- Menandai pelanggan yang belanja besar atau sering belanja.
Kesalahan yang sering terjadi
- Mencampur
ANDdanORtanpa kurung.ANDdikerjakan lebih dulu, jadi hasilnya bisa tidak sesuai maksud. Tulis dengan kurung:(kota = 'Jakarta' OR kota = 'Bandung') AND gaji > 8000000.
NOT