亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

MySQL: ?W?hlen Sie Text aus... als <Variable hier oder Unterabfrage>'
P粉012875927
P粉012875927 2024-04-06 19:25:54
0
2
1348

Ich habe die folgende Tabelle mit den folgenden Daten:

id Text Sprache
1 Deutscher Text Deutsch
2 Englischer Text Englisch

Ich m?chte Ergebnisse im folgenden Format erhalten:

german="deutscher text"
english="english text"

Das sollte nicht bedeuten:

text="deutscher text"
text="english text"

Schlüssel-/Spaltennametext應(yīng)該是來自languageDaten

Ich habe die folgende Abfrage versucht, aber sie funktioniert nicht:

SELECT text as (SELECT language FROM `table` where id = 1) FROM `table` where id = 1;

(SELECT language FROM table where id = 1) gibt ?deutsch“ zurück, daher sollte die Abfrage wie folgt lauten: ?W?hlen Sie deutschen Text aus table, wobei id = 1;“ aber das funktioniert nicht.

Gibt es eine M?glichkeit, dies in einer Abfrage zu tun?

Cheers, Thomas

P粉012875927
P粉012875927

Antworte allen(2)
P粉805931281

您必須稍微更改一下表架構(gòu);添加了對要使用的語言進(jìn)行分組的引用

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ref` int(11) DEFAULT 0,
  `text` varchar(50) DEFAULT NULL,
  `language` varchar(50) DEFAULT NULL,
  KEY `Index 1` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3;

然后是SQL

SELECT T.text AS english, T2.text AS german
FROM test T 
INNER JOIN test T2 ON T.ref = T2.ref AND T2.`language` = 'german'
WHERE 
    T.ref = 1 AND
    T.language = 'english'

虛擬數(shù)據(jù)

INSERT INTO `test` (`id`, `ref`, `text`, `language`) VALUES
    (1, 1, 'deutscher text', 'german'),
    (2, 1, 'english text', 'english');
P粉520545753

您可以使用的一個選項是 PREPARED STATMENT:

SET @sql := NULL;

SELECT GROUP_CONCAT(
           CONCAT('MAX(CASE WHEN language="',language,'" THEN text END) AS "',language,'"')) 
         INTO @sql
FROM mytable;

SELECT CONCAT('SELECT ',@sql,' FROM mytable;') INTO @sql;

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

第一步是動態(tài)分配 @sql 變量所需的列。然后,將先前分配的 @sql 變量與最終 SELECT 查詢的其余部分連接起來,然后將其重新分配給 @sql 變量。查詢將以:

SELECT MAX(CASE WHEN language="german" THEN text END) AS "german",
       MAX(CASE WHEN language="english" THEN text END) AS "english" 
FROM mytable;

最后,我們準(zhǔn)備、執(zhí)行然后取消分配在 @sql 變量中分配的語句,您將得到預(yù)期的結(jié)果。

演示小提琴

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage