我在查询中没有得到正确的结果

I am not getting the correct result in the query

我创建了下面的演示,以使其更易于理解和帮助。我希望你能帮助我。 https://www.db-fiddle.com/f/2LNHN7QdSMDgKLgupEFxoq/9

从SQL查询可以看出,我想将mp3文件打印到屏幕上。但是如果你运行查询,你可以看到查询的结果是错误的。

post_fileid和upload_id其实是同一个id。请查看 post_id 和 upload_id 以找出问题所在。

所以 post_id 1 中的 post_file 2,9 实际上是 upload_id 2i_user_uploads 中的 upload_id 9 table.

根据这个条件,我如何使用post_idpost_fileupload_id.

只将upload_file_ext = 'mp3'数据打印到屏幕上

我写的查询如下。您可以检查下面的 DEMO 以 运行 使用 table 的查询。

SELECT P.*,
       U.*,
       A.*
FROM i_friends F FORCE INDEX(ixFriend)
INNER JOIN i_posts P FORCE INDEX (ixForcePostOwner) ON P.post_owner_id = F.fr_two 
INNER JOIN i_users U FORCE INDEX (ixForceUser) ON P.post_owner_id = U.iuid  AND U.uStatus IN('1','3')  AND F.fr_status IN('me', 'flwr', 'subscriber')  
INNER JOIN i_user_uploads A FORCE INDEX (iuPostOwner) ON P.post_owner_id = A.iuid_fk 
AND P.post_file <> ''  AND A.uploaded_file_ext = 'mp3'
WHERE P.post_owner_id='1'
ORDER BY P.post_id

提前谢谢你。

只需添加一个等式测试 -

SELECT P.*,U.*,A.*
     FROM i_friends F FORCE INDEX(ixFriend)
      INNER JOIN i_posts P FORCE INDEX (ixForcePostOwner)
      ON P.post_owner_id = F.fr_two 
      INNER JOIN i_users U FORCE INDEX (ixForceUser)
      ON P.post_owner_id = U.iuid AND U.uStatus IN('1','3') AND F.fr_status IN('me', 'flwr', 'subscriber')  
      INNER JOIN i_user_uploads A FORCE INDEX (iuPostOwner)
      ON P.post_owner_id = A.iuid_fk 
      AND P.post_file <> '' 
      AND A.uploaded_file_ext = 'mp3'
and cast(p.post_file as int) = upload_id
        WHERE P.post_owner_id='1'
        ORDER BY P.post_id;

顺便说一句,强制索引真的能提高性能吗?