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

テーブルに設定された価格の最大値と最小値について、MySQLの日付を条件付きで選択しますか?


最小価格と最大価格を見つけるには、CASEステートメントを使用して日付を条件付きで選択する必要があります。集計関数MIN()およびMAX()を使用してCASEステートメントをまとめます。構文は次のとおりです。

 SELECTMIN(CASE WHEN CURDATE()BETWEEN yourStartDateColumnName AND yourEndDateColumnName THEN yourLowPriceColumnName ELSE yourHighPriceColumnName END)AS anyVariableName、MAX(CASE WHEN CURDATE()BETWEEN yourStartDateColumnName AND yourEndDateColumnName THEN yourLowPriceColumnName THEN yourLowPriceColumnName ELSE yourHigh 

上記の構文を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです。

 mysql> create table ConditionalSelect->(-> Id int NOT NULL AUTO_INCREMENT、-> StartDate datetime、-> EndDate datetime、-> LowerPrice int、-> HigherPrice int、-> PRIMARY KEY(Id)->);クエリOK、影響を受ける行は0(0.69秒)

挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。クエリは次のとおりです。

 mysql> ConditionalSelect(StartDate、EndDate、LowerPrice、HigherPrice)に挿入values( '2019-01-02'、 '2019-04-02'、5,10);クエリOK、1行が影響を受ける(0.12秒) mysql> insert into ConditionalSelect(StartDate、EndDate、LowerPrice、HigherPrice)values( '2019-04-02'、 '2019-04-20'、0,20);クエリOK、影響を受ける1行(0.17秒)mysql> insert ConditionalSelect(StartDate、EndDate、LowerPrice、HigherPrice)values( '2019-04-03'、 '2019-04-21'、0,30);クエリOK、影響を受ける1行(0.17秒)

selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです。

 mysql> select * from ConditionalSelect; 

出力は次のとおりです。

 + ---- + --------------------- + ------------------- -+ ------------ + ------------- + | Id | StartDate | EndDate | LowerPrice | HigherPrice | + ---- + --------------------- + -------------------- -+ ------------ + ------------- + | 1 | 2019-01-02 00:00:00 | 2019-04-02 00:00:00 | 5 | 10 || 2 | 2019-04-02 00:00:00 | 2019-04-20 00:00:00 | 0 | 20 || 3 | 2019-04-03 00:00:00 | 2019-04-21 00:00:00 | 0 | 30 | + ---- + --------------------- + -------------------- -+ ------------ + ------------- + 3行セット(0.00秒)

日付間の最低価格と最高価格を選択するためのクエリは次のとおりです。

 mysql> SELECT-> MIN(CASE WHEN CURDATE()BETWEEN StartDate AND EndDate THEN LowerPrice ELSE HigherPrice END)AS MinimumValue、-> MAX(CASE WHEN CURDATE()BETWEEN StartDate AND EndDate THEN LowerPrice ELSE HigherPrice END)AS MaximumValue->ConditionalSelectから;

出力は次のとおりです。

 + -------------- + -------------- + |最小値| MaximumValue | + -------------- + -------------- + | 5 | 30 | + -------------- + -------------- + 1行セット(0.00秒)

  1. MySQLテーブルで先行ゼロの値を選択して挿入します

    このために、LPAD()とともにINSERTINTOSELECTステートメントを使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable1967    (    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    UserId varchar(20)    ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql>

  2. 列値のMySQLでENUMを設定します

    テーブルの作成中に、ENUM値が必要な列のENUMタイプを設定します。まずテーブルを作成しましょう- mysql> create table DemoTable2019    -> (    -> StudentMarks int,    -> StudentStatus ENUM('First','Second','Fail')    -> ); Query OK, 0 rows affected (1.75 sec) 挿入コマンド-