我有2个表(用户和朋友):
users : user_sid | user_status
friends : user_sid | user2_sid | type
我想获得在线朋友列表,所以我使用以下语法:
SELECT user_sid
FROM users
WHERE users.user_status>0
AND users.user_sid IN (
(SELECT user_sid FROM friends WHERE user2_sid = '5604075088818445472' AND type=1)
UNION
(SELECT user2_sid FROM friends WHERE user_sid = '5604075088818445472' AND type=1)
) LIMIT 20 OFFSET 0
但我收到警告
SQL语法中有错误;查看与您的MariaDB服务器版本对应的手册,了解在第1行"UNION(SELECT user2_sid FROM friends WHERE user_sid ='56040750888184454 ...'"附近使用的正确语法
我所理解的是
((SELECT user_sid FROM friends WHERE user2_sid = '5604075088818445472' AND type=1))
返回空,并在mariadb中给出警告。
有人能帮忙吗?谢谢
我想得到的网上朋友名单没有警告,如果没有朋友。
1条答案
按热度按时间rjjhvcjd1#
语法错误不可能是由于子查询返回的内容造成的,因为语法是在执行任何操作之前检查的。
问题是括号太多了,它认为你在执行
IN (list of values)
而不是IN (subquery)
,所以去掉UNION
中每个查询周围多余的括号。