我有一个mysql表,在那里我有相同的文本,但是用不同的语言
ID, Lang, Text, number, chapter
1, English, Hello, 2, 1
4, German, Hallo, 2, 1
5, Spanish, Hola, 2, 1
那么如何看到这样的人
Select * from table where chapter=1 (and language: english,german,spanish)
ID, lang1, lang2, lang3, number, chapter
5, Hello, Hallo, Hola, 2, 1
我想加入1行中的列
答案 0 :(得分:2)
创建表测试:
CREATE TABLE test (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
Lang VARCHAR(30) NOT NULL,
Text VARCHAR(30) NOT NULL,
number VARCHAR(50),
chapter INT(10))
插入记录:
insert into test values(1,'English','Hello','2',1);
insert into test values(4,'German','Hallo','2',1);
insert into test values(5,'Spanish','Hola','2',1);
+----+---------+-------+--------+---------+
| id | Lang | Text | number | chapter |
+----+---------+-------+--------+---------+
| 1 | English | Hello | 2 | 1 |
| 4 | German | Hallo | 2 | 1 |
| 5 | Spanish | Hola | 2 | 1 |
+----+---------+-------+--------+---------+
SELECT MAX(id) id, MAX(CASE WHEN Lang ='English' THEN Text END) lang1,
MAX(CASE WHEN Lang ='German' THEN Text END) lang2,
MAX(CASE WHEN Lang ='Spanish' THEN Text END) lang3, number, chapter
FROM test GROUP BY number, chapter;
+------+-------+-------+-------+--------+---------+
| id | lang1 | lang2 | lang3 | number | chapter |
+------+-------+-------+-------+--------+---------+
| 5 | Hello | Hallo | Hola | 2 | 1 |
+------+-------+-------+-------+--------+---------+
答案 1 :(得分:1)
您可以尝试使用条件汇总函数来实现它。
模式(MySQL v5.7)
CREATE TABLE T(
ID int,
Lang varchar(50),
Text varchar(50),
number int,
chapter int
);
INSERT INTO T VALUES (1, 'English', 'Hello', 2, 1);
INSERT INTO T VALUES (4, 'German', 'Hallo', 2, 1);
INSERT INTO T VALUES (5, 'Spanish', 'Hola', 2, 1);
查询#1
SELECT MAX(ID) id,
MAX(CASE WHEN Lang ='English' THEN Text END) lang1,
MAX(CASE WHEN Lang ='German' THEN Text END) lang2,
MAX(CASE WHEN Lang ='Spanish' THEN Text END) lang3,
number,
chapter
FROM T
GROUP BY number, chapter;
| id | lang1 | lang2 | lang3 | number | chapter |
| --- | ----- | ----- | ----- | ------ | ------- |
| 5 | Hello | Hallo | Hola | 2 | 1 |
答案 2 :(得分:1)
SELECT * FROM
(SELECT LangAS t1, vargu FROM table LANG=114 AND chapter=1) as A,
(SELECT LangAS t2 FROM table WHERE LANG=115 AND chapter=1) AS B,
(SELECT LangAS t3 FROM table WHERE LANG=116 AND chapter=1) AS C;