当sql查询找不到匹配项时返回结果

时间:2012-03-16 23:41:06

标签: sql

我从名为people的数据库中提取用户标识,并为其提供了一个$ userid变量。有时,相同的用户标识与另一个名为info的表相关联。有时存在匹配的用户标识,有时该用户标识与信息表无关。当我执行以下查询时,当people表中的用户标识在info表中没有匹配的用户标识时,将跳过该函数。有什么方法可以在找不到匹配项时返回结果吗?

$club_query = $wpdb->get_results( $wpdb->prepare("SELECT clubs FROM info WHERE userid = '$userid' LIMIT 1") );

如果俱乐部在结果中,则执行一项功能。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我曾经使用过一些肮脏的黑客来做这类事情。一种是使用MIN(clubs)而不是clubs,因为如果没有行,则MIN(...)会返回NULL

SELECT MIN(clubs) clubs FROM info WHERE userid = ...

另一种方法是使用RIGHT JOIN (SELECT 1) t

SELECT info.clubs FROM info RIGHT JOIN (SELECT 1) t ON info.userid = ...

这两种方法都有效,但有一些缺点/限制。

编辑添加:我刚才想到的另一种方法是在字段列表中使用子查询:

SELECT (SELECT clubs FROM info WHERE userid = ...) clubs;

还将空结果集转换为NULL。这也有一些限制。