MYSQL:我从一行中获得多行

时间:2018-02-01 11:33:07

标签: php mysql sql rows

所以我试图获得一排朋友的消息,但我确实得到的是多行一个消息。所以我做了一些研究,但我无法找到任何相关的方法。

现在,在用户向我发送此查询后,我遇到了第二个问题:

SELECT msg, userpost_ID, created, userone_ID, usertwo_ID, accepted 
FROM friendship, Posts 
WHERE friendship.userone_ID = '13' AND (Posts.userpost_ID = friendship.usertwo_ID OR Posts.userpost_ID = '13')

现在我使用了JOIN语法,但它在查询中显示了同样的问题:

SELECT P.msg, P.userpost_ID, P.created,
   F.userone_ID, F.usertwo_ID, F.accepted, U.fname, U.lname FROM Posts P JOIN friendship F ON F.userone_ID = '13' JOIN Users U ON U.ID = F.usertwo_ID

enter image description here

3 个答案:

答案 0 :(得分:1)

您必须在 using (_logger.BeginScope("Some really useful information")) { // something something _logger.LogError("Oh no."); }

周围添加大括号
OR

也可以使用现代的explizite join而不是implizit,使用where

答案 1 :(得分:0)

您在查询中遇到错误只是使用以下查询来获得准确的结果,或者只是在OR条件中添加括号

SELECT 
   msg, 
   userpost_ID, 
   created, 
   userone_ID, 
   usertwo_ID, 
   accepted 
FROM 
   friendship, 
   Posts 
WHERE 
   friendship.userone_ID = '13'
   AND (Posts.userpost_ID = friendship.usertwo_ID 
   OR Posts.userpost_ID = '13')

希望这会对你有所帮助!!

谢谢&此致

答案 2 :(得分:0)

从不FROM子句中使用逗号。 始终使用正确的,明确的JOIN语法。这几乎可以解决你的问题:

SELECT . . .
FROM friendship f JOIN
     Posts p
     ON p.userpost_ID = f.usertwo_ID 
WHERE f.userone_ID = 13;

注意:

  • 如果您还想要用户的消息,则只需要p.userpost_ID = 13
  • 表别名使查询更易于编写和阅读。
  • 您应该限定所有列名称(指定它们来自的表格)。