如果找不到行-mysql,则返回默认值

Jad*_* RJ 6 mysql

我正在构建查询以从数据库中搜索多行

SELECT 
  * 
FROM
  table1 
WHERE col1 = '012311' 
  OR col1 = '0123631' 
  OR col1 = '091233' 
  OR col1 = '092111' 
Run Code Online (Sandbox Code Playgroud)

这里它返回前3个值,因为它们存在于表中,但它不返回最后一个值,因为它不在表中.那么如果没有找到该值的行,如何在查询中设置我的默认值?

Jon*_*osi 8

有几种方法,取决于数据集.这是一种方式:

SELECT *, 
IFNULL(
    ( SELECT col1 FROM table1 
        WHERE col1 IN ('012311','0123631','091233','092111') 
    ),
    'some_value'
) AS my_col1
FROM table1;
Run Code Online (Sandbox Code Playgroud)

不必复制+粘贴,您必须根据具体情况进行调整.


ash*_*ish 6

在MySQL中,如果找不到行,则可以使用IFNULL返回指定值,即当它返回NULL时,

SELECT IFNULL( (SELECT col1 FROM table1 WHERE col1 in (your_list)) ,'default_value_you_want_to_return');
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看 IFNULL的示例-IFNULL的示例