![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
MySQLにてSELECT文にて順列の抽出をしようと試みていますが、順列を出すためのSQL文がわからず困っています。
TABLE1
+-----+-----+-----+-----+
| NUM | A | B | C |
+-----+-----+-----+-----+
| 101 | 0 | 4 | 9 |
+-----+-----+-----+-----+
| 102 | 2 | 2 | 0 |
+-----+-----+-----+-----+
例えば上記の様なテーブルがあって、NUM=101のA,B,Cを取り出して
049
094
409
490
904
940
のような順列を作り出してPHPから渡した変数D(仮にvar=409)と照らし合わせようと試みていますが、1つの行の中の数字で順列を抽出するSQL文がわからず困っていますので、ご教授願います。
No.1ベストアンサー
- 回答日時:
バージョンにもよりますが、サブクエリーが使えるなら、次のような解はどうでしょう?
select T0.a,T1.a,T2.a
from
(
select a as a from ttt where num = 101 union
select b as a from ttt where num = 101 union
select c from ttt where num = 101) as T0,
(
select a as a from ttt where num = 101 union
select b as a from ttt where num = 101 union
select c from ttt where num = 101) as T1,
(
select a as a from ttt where num = 101 union
select b as a from ttt where num = 101 union
select c from ttt where num = 101) as T2
where T0.a <> T1.a and T0.a <> T2.a and T1.a <> T2.a;
No.4
- 回答日時:
データの持たせ方を換えられませんか?
CREATE TABLE `TABLE1`(
NUM char(3) NOT NULL
,NAME varchar(10)
,DATA char(1)
);
INSERT INTO `TABLE1` VALUES
('101','A','0')
,('101','B','4')
,('101','C','9')
,('102','A','0')
,('102','B','2')
,('102','C','2');
つまり
NUM NAME DATA
101 A 0
101 B 4
101 C 9
102 A 0
102 B 2
102 C 2
こんな構造でしたら、積をとって簡単に取り出せます
SELECT t1.NUM,CONCAT(t1.DATA,t2.DATA,t3.DATA) AS `ABC`
FROM `TABLE1` as t1
INNER JOIN `TABLE1` as t2
ON t1.NUM=t2.NUM
AND t2.NAME!=t1.NAME
INNER JOIN `TABLE1` as t3
ON t1.NUM=t3.NUM
AND t3.NAME!=t1.NAME
AND t3.NAME!=t2.NAME
No.2
- 回答日時:
配列が3程度まででよければ、地道に以下のSQLで良いのでは?
$key = '409';
select num from table1
where
(a = substring($key, 1, 1) and b = substring($key, 2, 1) c = substring($key, 3, 1))
or
(b = substring($key, 1, 1) and c = substring($key, 2, 1) a = substring($key, 3, 1))
or
(c = substring($key, 1, 1) and a = substring($key, 2, 1) b = substring($key, 3, 1))
必要に応じて
order by a, b, c
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- PHP カラーミーショップのSmartyでの文字列抜き出し 2 2022/05/06 11:51
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- Excel(エクセル) 上から順にすべてのデータを抽出したい 3 2023/08/25 15:29
- Visual Basic(VBA) SQLで抽出 4 2022/12/04 13:55
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
select文の実行結果に空白行を...
-
SQLで連続したカラムが何個ある...
-
mysql5でGROUP BYごとにLIMIT??
-
割合(パーセント)を求めるには?
-
SQLだけでselect結果に定数を加...
-
空きのID番号を取得する方法
-
Select文1 マイナス Select文2
-
SQL文の入れ子について
-
任意の上位の集計を取得するには?
-
SQLローダーCSV取込で、囲み文...
-
テーブルの最後(最新)のレコー...
-
【PL/SQL】FROM区に変数を使う方法
-
単一グループのグループ関数で...
-
1の行を固定した上でVBAを用い...
-
データ
-
count関数の値をwhere句で使用...
-
SQL文 複数実行
-
AccessのSQL文で1件のみヒット...
-
並べ替えについて
-
枝番の最大値とその前のデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
select文の実行結果に空白行を...
-
割合(パーセント)を求めるには?
-
SQL文の入れ子について
-
24時間以内に更新されたデータ...
-
時間帯テーブルから直近空き時...
-
空きのID番号を取得する方法
-
LIMIT句で少なくとも1行は選択...
-
Mysqlで変数を使ったSELECT文の...
-
SQLにて順列の抽出
-
SQLだけでselect結果に定数を加...
-
任意の上位の集計を取得するには?
-
条件付けで集計したものをUNION...
-
mysql5でGROUP BYごとにLIMIT??
-
3テーブルの外部結合
-
MySQLのサブクエリ
-
時間帯テーブルから直近空き時...
-
SQLで連続したカラムが何個ある...
-
SQLローダーCSV取込で、囲み文...
-
単一グループのグループ関数で...
-
テーブルの最後(最新)のレコー...
おすすめ情報