MySQL选择语句

时间:2012-11-11 19:29:07

标签: mysql sql select

我正在学习更多SQL,并遇到了“问题”,

我有两个表格,如下面的链接 http://www.sqlfiddle.com/#!2/403d4/1

编辑: 由于我在本周末所做的所有SQL测试中都很迟钝,所以我说错了...... 对不起伙计......

我真正想要的是:

如果我有所要求的语言,我想获得所有记录,如果请求的语言不在titles-table中,我希望它说“”或null ...

如果我要求'de'中的所有记录,我想要:

1  |  ACHTUNG
2  |  NULL

如果我要求'en'中的所有记录

1  |  WARNING
2  |  Ambulance

对于错误的问题真的很抱歉。

/ * 我想做的事: 我有记录的ID和所要求的语言。 如果所选语言不存在,我希望它采用其他语言。

如果我有: language ='de'和id = 1 我想'ACHTUNG',

如果我有: language ='de'和id = 2 我想要“救护车”,因为没有'de'...... * /

我该怎么做?

2 个答案:

答案 0 :(得分:1)

http://www.sqlfiddle.com/#!2/403d4/89

SELECT rec.id, title.name
FROM Records rec
LEFT JOIN Titles title ON title.record_id = rec.id and title.language='de';

SELECT rec.id, title.name
FROM Records rec
LEFT JOIN Titles title ON title.record_id = rec.id and title.language='en';


ID  NAME
1   ACHTUNG
2   (null)

ID  NAME
1   Warning
2   Ambulance

答案 1 :(得分:0)

您可以应用自定义订单,只返回第一行,如下所示:

SELECT
    rec.id,
    title.language,
    title.name

FROM Records rec

LEFT JOIN Titles title
ON title.record_id = rec.id

WHERE rec.id = 1
ORDER BY Field(title.language, "de") DESC
LIMIT 1

此查询首先返回包含所需语言的记录(如果存在)。如果没有,它将只返回找到的内容。您可能需要查看at this answer