Czasami może być konieczne porównanie dwóch kolumn z tej samej tabeli lub innej tabeli w MySQL. MySQL umożliwia łatwe porównywanie dwóch kolumn za pomocą operatorów oraz zapytań zagnieżdżonych. W tym artykule przyjrzymy się, jak porównać dwie kolumny w MySQL.
Jak porównać dwie kolumny w MySQL
Przyjrzymy się różnym przypadkom użycia, aby porównać dwie kolumny w MySQL
Porównaj dwie kolumny z tej samej tabeli
Załóżmy, że masz następującą tabelę sprzedaż(id, koszt_cena, cena_sprzedaży) i chcesz porównać cost_price i selling_price kolumny.
mysql> create table sales(id int, cost_price int, selling_price int); mysql> insert into sales(id, cost_price, selling_price) values(1, 135, 215), (2,215, 145), (3,310,100); mysql> select * from sales; +------+------------+---------------+ | id | cost_price | selling_price | +------+------------+---------------+ | 1 | 135 | 215 | | 2 | 215 | 145 | | 3 | 310 | 100 | +------+------------+---------------+
Oto ogólne zapytanie SQL do dwóch porównujących kolumny (kolumna1, kolumna2) w tabeli (tabela1).
mysql> select * from table1 where column1 not in (select column2 from table1);
W powyższym zapytaniu zaktualizuj tabelę 1, kolumnę 1 i kolumnę 2 zgodnie z wymaganiami.
Przeczytaj bonus:Jak uzyskać każdy N-ty wiersz w MySQL
Zastosujemy to zapytanie do porównania dwóch kolumn cost_price i selling_price i wyświetlaj rekordy w przypadku niezgodności między dwiema kolumnami.
mysql> select * from sales where cost_price not in (select selling_price from sales); +------+------------+---------------+ | id | cost_price | selling_price | +------+------------+---------------+ | 1 | 135 | 215 | | 3 | 310 | 100 | +------+------------+---------------+
Możesz także użyć operatorów matematycznych (<,>, <>), jeśli chcesz porównać dwie kolumny liczbowe. Oto przykład wyświetlania wierszy, w których koszt_cena>cena_sprzedaży.
mysql> select * from sales where cost_price>selling_price; +------+------------+---------------+ | id | cost_price | selling_price | +------+------------+---------------+ | 2 | 215 | 145 | | 3 | 310 | 100 | +------+------------+---------------+
Przeczytaj bonus:Jak dodać kolumnę automatycznego przyrostu w MySQL
Porównaj dwie kolumny z innej tabeli
Załóżmy, że masz też inną tabelę zamówienia(id, cena_kosztu, cena_sprzedaży)
mysql> create table orders(id int, cost_price int, selling_price int); mysql> insert into orders(id, cost_price, selling_price) values(1, 235, 215), (2,205, 105), (3,320,120); mysql> select * from orders; +------+------------+---------------+ | id | cost_price | selling_price | +------+------------+---------------+ | 1 | 235 | 215 | | 2 | 205 | 105 | | 3 | 320 | 120 | +------+------------+---------------+
Przeczytaj bonus:5 najlepszych darmowych narzędzi do projektowania baz danych
Oto powyższe zapytanie SQL zmodyfikowane w celu porównania dwóch kolumn z różnych tabel table1 i table2
mysql> select * from table1 where column1 not in (select column2 from table2);
Zastosujemy powyższe zapytanie, aby porównać cost_price kolumna z sprzedaży tabela z ceną_sprzedaży z zamówieniami tabela.
mysql> select * from sales where cost_price not in (select selling_price from orders); +------+------------+---------------+ | id | cost_price | selling_price | +------+------------+---------------+ | 1 | 135 | 215 | | 3 | 310 | 100 | +------+------------+---------------+
Ubiq ułatwia wizualizację danych i monitorowanie ich w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj Ubiq za darmo.