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

複数の行を返すステートメントを使用してMySQLユーザー変数に値を割り当てるとどうなりますか?


複数の行を返すステートメントを使用してユーザー変数に値を割り当てる場合、ユーザー変数は保存できるため、最後の行の値がそのユーザー変数に保存されます。唯一の単一の値。テーブル「Tender」のデータを使用している例に従って、それを表示します-

mysql> select * from Tender;
+----+---------------+--------------+
| Sr | CompanyName   | Tender_value |
+----+---------------+--------------+
| 1  | Abc Corp.     |   250.369003 |
| 2  | Khaitan Corp. |   265.588989 |
| 3  | Singla group. |   220.255997 |
| 4  | Hero group.   |   221.253006 |
| 5  | Honda group   |   225.292266 |
+----+---------------+--------------+
5 rows in set (0.04 sec)
>

上記の結果セットは、テーブル「入札」のデータを示しています。次に、

で値を割り当てます。 次のように変数@nameの列「companyname」-

mysql> Select @name := companyname from tender;
+----------------------+
| @name := companyname |
+----------------------+
| Abc Corp.            |
| Khaitan Corp.        |
| Singla group.        |
| Hero group.          |
| Honda group          |
+----------------------+
5 rows in set (0.00 sec)

しかし、この変数を参照すると、最後の行にあった会社の名前のみが示されます。これは、ユーザー変数が単一の値しか格納できないためです。

mysql> Select @name;
+-------------+
| @name       |
+-------------+
| Honda group |
+-------------+
1 row in set (0.00 sec)

  1. MySQL IN()を使用して選択した複数の行を表示する

    まずテーブルを作成しましょう- mysql> create table DemoTable1045 (    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    FirstName varchar(100) )AUTO_INCREMENT=100; Query OK, 0 rows affected (0.62 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1045(FirstName) values('

  2. MySQLの行を列の値で配列にグループ化しますか?

    配列内の行をグループ化するには、ORDER BY句とともにGROUP_CONCAT()を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> Id int,    -> FirstName varchar(20)    -> ); Query OK, 0 rows affected (0.78 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert i