SQLSTATE [21000]:基数违规:1241操作数应包含1列。 SQL查询

时间:2016-07-12 10:27:59

标签: php mysql

我有两张名为'数据'和'地区'。我希望将包含数据相关记录的区域作为区域记录项。

区域

RegionId -- Name -- ParentId

数据

DataId -- RegiondId -- Url

示例结果:

[
{Name:"a", items:[{...},{...},{...}, ...]},
{Name:"b", items:[{...},{...},{...}, ...]},
]

我使用了此查询SELECT *,(SELECT * FROM data WHERE data.RegionId=regions.RegionId) AS items FROM regions WHERE regions.ParentId=1,但我得到了SQLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)

重要提示:Region的记录之间存在父关系。所以当我写这个条件data.RegionId=regions.Id时,它必须返回该项目与其孩子的匹配RegionIds

2 个答案:

答案 0 :(得分:2)

选择列表中的子查询必须返回一列和一行(单值),但那里有select *,因此出现错误消息。

您的查询应该编写为简单的内部联接而不是子查询:

SELECT *
FROM regions 
INNER JOIN data ON data.RegionId=regions.RegionId
WHERE regions.ParentId=1

答案 1 :(得分:0)

尝试一次插入多行时出现此错误。我将查询参数收集到一个数组中,并连接了占位符问号。当我有类似的东西时出现错误

INSERT INTO table (...) VALUES ((...),(...),(...))

当我应该拥有的时候

INSERT INTO table (...) VALUES (...),(...),(...)

请注意引起错误的多余括号。