我从名为people的数据库中提取用户标识,并为其提供了一个$ userid变量。有时,相同的用户标识与另一个名为info的表相关联。有时存在匹配的用户标识,有时该用户标识与信息表无关。当我执行以下查询时,当people表中的用户标识在info表中没有匹配的用户标识时,将跳过该函数。有什么方法可以在找不到匹配项时返回结果吗?
$club_query = $wpdb->get_results( $wpdb->prepare("SELECT clubs FROM info WHERE userid = '$userid' LIMIT 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
。这也有一些限制。