作成日:2019/06/27
更新日:2019/06/27
sqlの備忘録的なやつ.
状況
データベースからユーザを検索したいが,ログインしているユーザ(自分)も検索結果に出てきてスマートではなかった.
テーブルはこんな感じ.今回はusers
テーブルを作成した.
MariaDB [mydb]> desc users;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(12) | NO | PRI | NULL | auto_increment |
| name | varchar(128) | NO | | NULL | |
| email | varchar(128) | NO | | NULL | |
| password | varchar(128) | NO | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
MariaDB [mydb]> select * from users;
+----+------+--------------+----------+---------------------+---------------------+
| id | name | email | password | created_at | updated_at |
+----+------+--------------+----------+---------------------+---------------------+
| 1 | aaa | aaa@hoge.com | hogeaaa | 2019-06-27 12:42:44 | 2019-06-27 12:42:44 |
| 2 | bbb | bbb@hoge.com | hogebbb | 2019-06-27 12:43:07 | 2019-06-27 12:43:07 |
| 3 | ccc | ccc@hoge.com | hogeccc | 2019-06-27 12:43:17 | 2019-06-27 12:43:17 |
| 4 | ddd | ddd@hoge.com | hogeddd | 2019-06-27 12:43:31 | 2019-06-27 12:43:31 |
+----+------+--------------+----------+---------------------+---------------------+
4 rows in set (0.000 sec)
例えば...
idが3以下のユーザを表示したいときは以下のようになる.
MariaDB [mydb]> select * from users where id<4;
+----+------+--------------+----------+---------------------+---------------------+
| id | name | email | password | created_at | updated_at |
+----+------+--------------+----------+---------------------+---------------------+
| 1 | aaa | aaa@hoge.com | hogeaaa | 2019-06-27 12:42:44 | 2019-06-27 12:42:44 |
| 2 | bbb | bbb@hoge.com | hogebbb | 2019-06-27 12:43:07 | 2019-06-27 12:43:07 |
| 3 | ccc | ccc@hoge.com | hogeccc | 2019-06-27 12:43:17 | 2019-06-27 12:43:17 |
+----+------+--------------+----------+---------------------+---------------------+
3 rows in set (0.002 sec)
このとき,例えばaaa
のユーザがログインしており,aaa
は除外したい場合があったがちょっとハマった.
解決策
ただログインしているユーザのidを除外すればよかった.
MariaDB [mydb]> select * from users where id<4 and id!=1;
+----+------+--------------+----------+---------------------+---------------------+
| id | name | email | password | created_at | updated_at |
+----+------+--------------+----------+---------------------+---------------------+
| 2 | bbb | bbb@hoge.com | hogebbb | 2019-06-27 12:43:07 | 2019-06-27 12:43:07 |
| 3 | ccc | ccc@hoge.com | hogeccc | 2019-06-27 12:43:17 | 2019-06-27 12:43:17 |
+----+------+--------------+----------+---------------------+---------------------+
2 rows in set (0.002 sec)
phpで実行する場合は,id!=1
の部分をログインユーザのidを取得してきて置き換えてあげればOK!
以上だ( `・ω・)b