MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで別の重複する列値が見つかった場合、列値に基づいて行を除外しますか?


このために、サブクエリを使用できます。まず、-

を作成しましょう
mysql> create table DemoTable1427
   -> (
   -> StudentId int,
   -> StudentMarks int
   -> );
Query OK, 0 rows affected (1.28 sec)

insert-

を使用して、テーブルにいくつかのレコードを挿入します
mysql> insert into DemoTable1427 values(201,89);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1427 values(201,99);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1427 values(210,98);
Query OK, 1 row affected (0.16 sec)

select-

を使用してテーブルのすべてのレコードを表示します
mysql> select * from DemoTable1427 ;

これにより、次の出力が生成されます-

+-----------+--------------+
| StudentId | StudentMarks |
+-----------+--------------+
|       201 |           89 |
|       201 |           99 |
|       210 |           98 |
+-----------+--------------+
3 rows in set (0.00 sec)

別の重複する列値が見つかった場合に、列値に基づいて行を除外するクエリを次に示します。ここで、Studentmarks89はStudentId201であり、Studentid 201も別のレコードを持っているため、両方が結果から除外されます-

mysql> select * from DemoTable1427
   -> where StudentId NOT IN (select distinct StudentId from DemoTable1427 where StudentMarks=89);

これにより、次の出力が生成されます-

+-----------+--------------+
| StudentId | StudentMarks |
+-----------+--------------+
|       210 |           98 |
+-----------+--------------+
1 row in set (0.00 sec)

  1. MySQLのタイムスタンプ列に基づいてデータを選択し、値をブール値に設定します

    これには、IF()を使用します。まず、現在の日付を見てみましょう- mysql> select curdate(); +------------+ | curdate()  | +------------+ | 2019-12-10 | +------------+ 1 row in set (0.00 sec) まずテーブルを作成しましょう- mysql> create table DemoTable1890    (    DueDate timestamp    ); Query OK, 0 rows a

  2. MySQLで選択した値が「0」の場合は別の列から選択しますか?

    これには、MySQLでIF()を使用します。構文は次のとおりです- select IF(yourColumnName1=0,yourColumnName2,yourColumnName1) as anyAliasName from yourTableName; テーブルを作成しましょう- mysql> create table demo30 −> ( −> id int not null auto_increment primary key, −> value int, −> original_value int