簡體   English   中英

右連接查詢返回空值記錄

[英]right join query returning null value records

CREATE TABLE IF NOT EXISTS `tweets_comment_tbl` (
  `tweet_comment_id` int(12) NOT NULL AUTO_INCREMENT,
  `tweet_id` int(12) NOT NULL,
  `tweets_comment` text NOT NULL,
  `created` int(12) NOT NULL,
  `changed` int(12) NOT NULL,
  `uid` int(12) NOT NULL,
  `userip` varchar(20) NOT NULL,
  `referer` text NOT NULL,
  `status` int(2) NOT NULL DEFAULT '1',
  PRIMARY KEY (`tweet_comment_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

--
-- Dumping data for table `tweets_comment_tbl`
--

INSERT INTO `tweets_comment_tbl` (`tweet_comment_id`, `tweet_id`, `tweets_comment`, `created`, `changed`, `uid`, `userip`, `referer`, `status`) VALUES
(1, 1, 'COMMENT USER1', 1319395671, 1319395671, 3, '127.0.0.1', 'http://localhost/drupal_tutorial/', 1),
(2, 2, 'comment admin user', 1319395724, 1319395724, 1, '127.0.0.1', 'http://localhost/drupal_tutorial/node', 1),
(3, 2, 'USER COMMENTING HIS COMMENT', 1319395838, 1319395838, 3, '127.0.0.1', 'http://localhost/drupal_tutorial/', 1),
(4, 2, 'ADMIN COMMENTING FOR HIS COMMENT', 1319395865, 1319395865, 1, '127.0.0.1', 'http://localhost/drupal_tutorial/node', 1),
(5, 2, 'dddCOMMENT USER1: ADMIN DOING COMMENT FOR STATUS UPDATE1', 1319395905, 1319395905, 1, '127.0.0.1', 'http://localhost/drupal_tutorial/node', 1);

我的第二張桌子

CREATE TABLE IF NOT EXISTS `tweets_tbl` (
  `tweet_id` int(11) NOT NULL AUTO_INCREMENT,
  `tweets` text NOT NULL,
  `created` int(12) NOT NULL,
  `changed` int(12) NOT NULL,
  `uid` int(12) NOT NULL,
  `userip` varchar(20) NOT NULL,
  `referer` text NOT NULL,
  `status` int(2) NOT NULL DEFAULT '1',
  PRIMARY KEY (`tweet_id`),
  KEY `tweet_id` (`tweet_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `tweets_tbl`
--

INSERT INTO `tweets_tbl` (`tweet_id`, `tweets`, `created`, `changed`, `uid`, `userip`, `referer`, `status`) VALUES
(1, 'STATUS UPDATE 1', 1319395633, 1319395633, 1, '127.0.0.1', 'http://localhost/drupal_tutorial/node', 1),
(2, 'Status update user1', 1319395696, 1319395696, 3, '127.0.0.1', 'http://localhost/drupal_tutorial/node', 1);

嘗試加入查詢

SELECT ut.picture as picture, tct.tweet_id as tweet_id, tct.tweets_comment as tweets_comment, tct.changed
FROM tweets_comment_tbl tct
RIGHT JOIN users as ut ON tct.uid=ut.uid AND tct.tweet_id=2 AND tct.status = 1
order by tct.created desc

返回上述查詢的記錄

picture         tweet_id    tweets_comment  changed
                  1         COMMENT USER1   1319395671
                NULL    NULL        NULL
picture-1.png   NULL    NULL        NULL

實際上我所期望的是

picture         tweet_id    tweets_comment  changed
                  1         COMMENT USER1   1319395671

為什么查詢一直返回 NULL 記錄,我不確定我在連接查詢中哪里出錯了。

該查詢返回來自用戶的所有行,並根據ON條件加入tweets_comment_tbl 如果tweets_comment_tbl中沒有記錄與 userid 匹配,則來自users的記錄仍包含在記錄集中。 如果您只想看到有評論的用戶,您可能需要INNER JOIN

邊注 :
我認為幾乎總是可以避免RIGHT JOIN 使用LEFT JOIN查詢更容易閱讀和理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM