[英]Two rows to one row in mysql
Lets say i have this table可以说我有这张桌子
name![]() |
lang![]() |
message![]() |
---|---|---|
welcome![]() |
en ![]() |
Welcome, {user}....![]() |
welcome![]() |
ko![]() |
KoreanMessage1![]() |
error![]() |
en ![]() |
Error occurred.....![]() |
error![]() |
ko![]() |
KoreanMessage2![]() |
so i want to select this table like this:所以我想 select 这个表是这样的:
name![]() |
ko![]() |
en ![]() |
---|---|---|
welcome![]() |
KoreanMessage1![]() |
Welcome, {user}....![]() |
error![]() |
KoreanMessage2![]() |
Error occurred....![]() |
so how can i do this only with sql?那么我怎么能只用 sql 做到这一点? (i'm using mariadb)
(我正在使用 mariadb)
i tried this我试过这个
(SELECT
a.name, a.value AS ko, b.value AS en
FROM messages AS a
LEFT JOIN messages AS b
ON a.name = b.name AND a.lang = 'ko' AND b.lang = 'en')
UNION
(SELECT
a.name, a.value AS ko, b.value AS en
FROM messages AS a
RIGHT JOIN messages AS b
ON a.name = b.name AND a.lang = 'ko' AND b.lang = 'en')
ORDER BY name ASC
(the table is "message") (表是“消息”)
and it didnt work.它没有用。 there was same columns twice.
有两次相同的列。
oh and there might be some data that only in one language but i want to select that too with null on other language.哦,可能有一些数据只有一种语言,但我也想 select 和 null 使用其他语言。 for example like
例如喜欢
name![]() |
ko![]() |
en ![]() |
---|---|---|
welcome![]() |
NULL ![]() |
Welcome.![]() ![]() |
Kindly try this请试试这个
SELECT m.name,
msg1.message en,
msg2.message ko
FROM messages m
LEFT JOIN messages msg1
ON msg1.name = m.name
AND msg1.lang = 'en'
LEFT JOIN messages msg2
ON msg2.name = m.name
AND msg2.lang = 'ko'
GROUP BY m.name
I think you can use join
and group by
to get what you want.我认为你可以使用
join
和group by
来获得你想要的。
SELECT m.name, m_en.message en, m_ko.message ko
FROM messages m
INNER JOIN messages m_en ON m_en.name = m.name
INNER JOIN messages m_ko ON m_ko.name = m.name
WHERE m_en.lang = 'en'
AND m_ko.lang = 'ko'
GROUP BY m.name, en, ko
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.