English 中文(简体)
MySQL联接空行
原标题:MySQL join empty rows

我正试图在中构造一个简单的查询,以获取具有特定元字段的用户(这在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”)并将其放在一行中,这会导致用户的名字和姓氏都是Alexmy@email.com

我也尝试过(mmm.meta_key=“last_name”或mmm.meta_ key为NULL),但也不起作用

请帮我弄清楚

PS the tables structure:

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")
问题回答

暂无回答




相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...

热门标签