如何在表中选择一个值,如果它不存在,则选择另一个值


How to select a value in a table and if it doesn't exist another value?

我试图为此找到解决方案,但大多数其他答案都不起作用。

我有一个页面来翻译我的网站,使用 mySQL 所有文本都是回显的(当然是在溢出:auto中,这样整个页面就不会充满文本),我希望它回显所有已经翻译成翻译语言的文本。网站上所有尚未翻译的文本都应使用"英语"作为要显示的所选语言。我已经尝试了各种各样的事情,但我无法让它工作。

$sql=mysql_query("SELECT * FROM `website` WHERE language='$_SESSION[translate]' GROUP BY name");

是我目前拥有的查询。这将返回翻译语言中的所有翻译值,这很好,但它不会显示所有"名称"值,它应该显示所有其他英语"名称"值,因为它们还没有翻译。但是我不知道该怎么做,JOINS 似乎仅适用于多个表。

您可以将表与自身联接:

SELECT w1.name, IFNULL(w2.value, w1.value) AS value
FROM website AS w1
LEFT JOIN website AS w2 ON w1.name = w2.name AND w2.language = '$_SESSION[translate]'
WHERE w1.language = 'english'

当没有翻译时,外部联接会产生一个NULL值,然后IFNULL使用英语版本作为默认值。