我正在学习MYsql和php。现在陷入了mysql中这个奇怪的问题。我有两张桌子
soc_users_interest
和soc_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)`
如何列出具有相同用户兴趣的用户的所有状态(使用该应用程序的用户)?解决这个问题的方法有哪些?谢谢你的帮助;)
答案 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