回答編集履歴

1

こうしn

2023/03/14 05:26

投稿

yambejp
yambejp

スコア114839

test CHANGED
@@ -1,2 +1,47 @@
1
1
  ソート用に国のリストをテーブルにしておくほうがよいかもしれません
2
2
  またSQLのデータには原則順番はないため、「一番最初」を担保するなんらかのカラム(もしくは条件)が必要です
3
+
4
+ # 参考
5
+ ```SQL
6
+ CREATE TABLE furniture (
7
+ id int primary key auto_increment,
8
+ css VARCHAR(10),
9
+ country VARCHAR(3),
10
+ number VARCHAR(15)
11
+ );
12
+ INSERT INTO furniture (id,css,country, number) VALUES
13
+ (1,'Chair', 'JPN', '9P5X-8HJ5-L2QP'),
14
+ (2,'Chair', 'USA', 'A8C5-H4U6-XU2Q'),
15
+ (3,'Chair', 'KOR', 'V3J6-S5K3-U6W3'),
16
+ (4,'Table', 'JPN', 'F5P5-K6NS-8Q2Q'),
17
+ (5,'Table', 'USA', 'G4C5-K2Q2-X9KP'),
18
+ (6,'Table', 'FRA', 'A7C7-H5N5-L2P2'),
19
+ (7,'Sofa', 'KOR', 'O9K3-H3J3-V6N2'),
20
+ (8,'Sofa', 'USA', 'G2P3-U3H9-X3V3'),
21
+ (9,'Sofa', 'KOR', 'M6U2-V2Q2-R2Q2'),
22
+ (10,'Bed' , 'CHN' ,'A5L2-K2V6-K5K5'),
23
+ (11,'Bed' , 'FRA' ,'G8N7-H9X5-V7P2');
24
+
25
+
26
+ create table country(
27
+ id int primary key,
28
+ sort int null,
29
+ cname varchar(20));
30
+ create table country(
31
+ id int primary key,
32
+ sort int null,
33
+ cname varchar(20));
34
+
35
+ insert into country values
36
+ (1,null,'CHN'),
37
+ (2,1,'JPN'),
38
+ (3,3,'KOR'),
39
+ (4,2,'USA');
40
+
41
+
42
+ select * from furniture as t1
43
+ left join country as t2
44
+ on t1.country=t2.cname
45
+ where not exists (select 1 from furniture where t1.country=country and t1.id>id)
46
+ order by sort is null asc ,sort asc
47
+ ```