如何检索用户的状态有同样的兴趣Mysql查询问题

时间:2016-07-10 00:43:08

标签: php mysql sql sql-server sql-server-2008

我正在学习MYsql和php。现在陷入了mysql中这个奇怪的问题。我有两张桌子 soc_users_interestsoc_status。请参阅下面的表格结构。

----------                -----------
soc_status                soc_users_interest
----------                ------------
status_ID                 soc_interest_id (Auto increment)
status                    userID
userID                    Interest

我正在尝试列出具有相同用户兴趣的用户的所有状态(使用该应用程序的用户)。我提出了一个问题,但它没有返回正确的结果。这是我写的不起作用的查询。

 SELECT soc_status.statusID, soc_status.status FROM soc_status
WHERE soc_status.userID =

      (SELECT  
  soc_users_interest.userID as firstUser , 
  soc_users_interest.interest as firstUserInterest , 

  secondUser.userID as secondUser, 
  secondUser.interest as secondUserInterest 

 FROM soc_users_interest JOIN
  soc_users_interest secondUser 
     ON soc_users_interest.interest = soc_users_interest.interest) WHERE soc_users_interests.userID = "23445";

I am getting this error -> `[2016-07-09 20:53:26] [21000][1241] Operand should contain 1 column(s)`

如何列出具有相同用户兴趣的用户的所有状态(使用该应用程序的用户)?解决这个问题的方法有哪些?谢谢你的帮助;)

3 个答案:

答案 0 :(得分:0)

这样的东西应该能满足你的需求。虽然我没有你的桌子,所以我没有测试过。

SELECT  
  soc_users_interest.userID as firstUser , 
  soc_users_interest.interest as firstUserInterest , 
  secondUser.userID as secondUser, 
  secondUser.interest as secondUserInterest ,
  soc_status.statusID, soc_status.status

 FROM soc_users_interest, soc_users_interest secondUser,soc_status
 WHERE  
 firstUser.interest = secondUser.interest
 AND soc_status.userID=secondUser.userID
 AND firstUser.userID = "23445";

答案 1 :(得分:0)

SELECT soc2.userID, soc2.status, int.interest  FROM soc_status soc1
join soc_status soc2 on soc1.user_id=soc2.user_id and soc1.user_id="23445"
join soc_users_interest int on soc1.user_id=int.user_id

答案 2 :(得分:0)

只是一个问题。为什么你需要2张桌子。将这些数据合并为一个。如果您觉得不能拥有1个表,请使用具有正确列数的表JOIN WHERE tbl1.Userid = tbl2.Userid