2

我需要帮助。我有 2 个带有名称的表bkeys ( id, bkey, ip, user_id )wp_usermeta(是的,wordpress 表,感兴趣的字段是user_id, meta_key and meta_value)。我需要的是从 bkeys + meta_value 的值中选择所有行,其中 key 是昵称,因此结果将具有字段 bkey、ip 和 meta_value。问题是,bkeys 表的 ip 和 user_id 可以为 NULL(这意味着任何用户还没有使用键),因此 user_id 为 NULL 的行不会被查询选择

SELECT bkeys.bkey, bkeys.ip, wp_usermeta.meta_value
FROM bkeys
LEFT JOIN wp_usermeta ON ( bkeys.user_id = wp_usermeta.user_id )
WHERE meta_key='nickname'

我需要的是选择所有行,即使 user_id 为空。可能吗?如果是,怎么做?

4

1 回答 1

2

尝试移动meta_key = 'nickname'ON子句:

SELECT bkeys.bkey, bkeys.ip, wp_usermeta.meta_value
FROM bkeys
LEFT JOIN wp_usermeta ON wp_usermeta.user_id = bkeys.user_id
                     AND wp_usermeta.meta_key = 'nickname'

LEFT JOINs 视为两相滤波:

  • 首先,您尝试使用ON条件加入一行,否则您加入一个 NULL 行
  • 您可以在条件下进一步过滤连接或 NULL 行WHERE
于 2012-08-05T09:34:35.840 回答