说我有下表:
TABLE: product
===============================================================================
| product_id | language_id | name | description |
===============================================================================
| 1 | 1 | Widget 1 | Really nice widget. Buy it now! |
-------------------------------------------------------------------------------
| 1 | 2 | Lorem 1 | |
-------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我如何查询它,它试图给我name和descriptionwhere language_id= 2,但language_id如果列包含NULL,则回退到= 1?
在上面的例子中,我应该得到Lorem 1的name和Really nice widget. Buy it now!为description.
这个怎么样?
SET @pid := 1, @lid := 2;
SELECT
COALESCE(name,(
SELECT name
FROM product
WHERE product_id = @pid AND description IS NOT NULL
LIMIT 1
)) name,
COALESCE(description,(
SELECT description
FROM product
WHERE product_id = @pid AND description IS NOT NULL
LIMIT 1
)) description
FROM product
WHERE product_id = @pid
AND (language_id = @lid
OR language_id = 1)
ORDER BY language_id DESC
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
哪里:
@pid:当前产品ID@lid:当前语言IDname和/或的值description可以为nulllanguage_id = 2项目不存在