如何解决MySQL连接空行
| 我正在尝试构造一个简单的查询,以获取具有特定元字段的用户(这在Wordpress中,但没关系,因为它是原始sql) 我做了一个简单的查询,看起来像这样SELECT * FROM wp_sb_users u
LEFT OUTER JOIN wp_sb_usermeta m ON (u.ID=m.user_id)
LEFT OUTER JOIN wp_sb_usermeta mm ON (u.ID=mm.user_id)
LEFT OUTER JOIN wp_sb_usermeta mmm ON (u.ID=mmm.user_id)
WHERE
m.meta_key = \"autostatus\" AND
mm.meta_key = \"first_name\" AND
mmm.meta_key = \"last_name\"
尽管我只有一个小麻烦-如果mmm.meta_key = \"last_name\"
根本不存在,则不会返回该行。.我尝试了mmm.meta_key <=> \"last_name\"
,但是它接受了任何其他meta_key(例如\“ user_email \”)并放入其中行,然后导致用户的姓氏为Alex,姓氏为my@email.com
我也尝试过(mmm.meta_key = \“ last_name \”或mmm.meta_key为NULL),但它也无法正常工作
请帮我弄清楚
聚苯乙烯
表结构:
CREATE TABLE IF NOT EXISTS `wp_sb_users` (
`ID` bigint(20) unsigned NOT NULL auto_increment,`user_login` varchar(60) NOT NULL default \'\',`user_pass` varchar(64) NOT NULL default \'\',`user_nicename` varchar(50) NOT NULL default \'\',`user_email` varchar(100) NOT NULL default \'\',`user_url` varchar(100) NOT NULL default \'\',`user_registered` datetime NOT NULL default \'0000-00-00 00:00:00\',`user_activation_key` varchar(60) NOT NULL default \'\',`user_status` int(11) NOT NULL default \'0\',`display_name` varchar(250) NOT NULL default \'\',PRIMARY KEY (`ID`),KEY `user_login_key` (`user_login`),KEY `user_nicename` (`user_nicename`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=30 ;
CREATE TABLE IF NOT EXISTS `wp_sb_usermeta` (
`umeta_id` bigint(20) unsigned NOT NULL auto_increment,`user_id` bigint(20) unsigned NOT NULL default \'0\',`meta_key` varchar(255) default NULL,`meta_value` longtext,PRIMARY KEY (`umeta_id`),KEY `user_id` (`user_id`),KEY `meta_key` (`meta_key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=792 ;
解决方法
SELECT * FROM wp_sb_users u
LEFT OUTER JOIN wp_sb_usermeta m ON (u.ID=m.user_id and m.meta_key = \"autostatus\")
LEFT OUTER JOIN wp_sb_usermeta mm ON (u.ID=mm.user_id and mm.meta_key = \"first_name\")
LEFT OUTER JOIN wp_sb_usermeta mmm ON (u.ID=mmm.user_id and mmm.meta_key = \"last_name\")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。