我试图找到一些解决方案来避免第三次 SELECT,但我什至不知道,如何用谷歌搜索它。
我的尝试(工作,但看起来很难看):
SELECT
u.*,
IF(
(SELECT meta_value from usermeta WHERE user_id = u.ID AND meta_key = 'first_name') = '',
'John',
(SELECT meta_value from usermeta WHERE user_id = u.ID AND meta_key = 'first_name')
) as first_name,
(SELECT meta_value from usermeta WHERE user_id = u.ID AND meta_key = 'reputation') as reputation
FROM wp_users AS u
我想要这样的东西:
SELECT
u.*,
IF(
(SELECT meta_value from usermeta WHERE user_id = u.ID AND meta_key = 'first_name') = '',
'John',
SOME_STATE0
) as first_name,
(SELECT meta_value from usermeta WHERE user_id = u.ID AND meta_key = 'reputation') as reputation
FROM wp_users AS u
连接表而不是使用子查询。
SELECT u.*, IF(meta_value = '' OR meta_value IS NULL, 'John', meta_value) AS first_name
FROM wp_users AS u
LEFT JOIN usermeta AS m ON m.user_id = u.id AND m.meta_key = 'first_name'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句