我正在尝试输出处于活动状态的字符的名字和名字。一次只能激活四个字符,因此
SELECT firstname,secondname FROM characters
不正确。
当我执行此SQL命令时:
SELECT firstname,secondname FROM characters WHERE charID=(SELECT charID FROM activechar)
错误:
mysql.connector.errors.DataError: 1242 (21000): Subquery returns more than 1 row
我的表格如下:
答案 0 :(得分:0)
您只需要使用IN
运算符:
SELECT firstname,secondname FROM characters WHERE charID IN (SELECT charID FROM activechar)
子查询可以继续返回多行,但是您的主查询将能够为它们查询。
答案 1 :(得分:0)
您可以继续使用=
的子查询切换IN
,这将检查子查询返回的集合中是否包含左操作数。但是使用IN
的子查询通常效果不佳。使用INNER JOIN
(仅返回两个表中的行,且ON
子句中的条件为true)可能是一个更好的选择。
SELECT c.firstname,
c.secondname
FROM characters c
INNER JOIN activechar ac
ON ac.charid = c.charid;