MySQL 尚不支持 LIMIT & IN/ALL/ANY/SOME

MySQL doesn't yet support LIMIT & IN/ALL/ANY/SOME

SELECT *, 
IF(users_posts.uid IN (SELECT puid FROM post_ups WHERE  post_ups.uid = UID LIMIT 400 ) AND users_posts.uid  <> UID ,10,0)
    FROM users_posts

我收到这个错误

This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

我如何在子查询上使用限制,我能否将其转换为连接语句,这个查询对性能是否有好处,理论上 gona 运行 +Million 重新编码?

更新 此代码的结果是否与上面相同?

SELECT *,IF(ups.puid = t1.uid,10,0)
    FROM users_posts t1
    LEFT JOIN (SELECT puid FROM post_ups WHERE  post_ups.uid = 135 ORDER BY `created_date` DESC LIMIT 400 ) AS ups ON ups.puid = t1.uid  AND t1.uid  <> 135

您可以通过

`SELECT *, 
IF(users_posts.uid IN (select * from (SELECT puid FROM post_ups WHERE  post_ups.uid = UID LIMIT 400) tmp_tbl ) AND users_posts.uid  <> UID ,10,0)
    FROM users_posts`

或者使用 INNER JOIN 代替 LEFT JOIN。

SELECT *,IF(ups.puid = t1.uid,10,0)
FROM users_posts t1 INNER JOIN (SELECT puid FROM post_ups WHERE  post_ups.uid = 135 ORDER BY `created_date` DESC LIMIT 400 ) AS ups ON ups.puid = t1.uid  AND t1.uid  <> 135