标签: mysql-error-1242

在MySQL中的子查询上使用GROUP_CONCAT

我有一个MySQL查询,我想在其中包含另一个表中的ID列表.在网站上,人们可以添加某些项目,然后人们可以将这些项目添加到他们的收藏夹中.我基本上想要获得那些喜欢该项目的人的ID列表(这有点简化,但这就是它归结为).

基本上,我做这样的事情:

SELECT *,
GROUP_CONCAT((SELECT userid FROM favourites WHERE itemid = items.id) SEPARATOR ',') AS idlist
FROM items
WHERE id = $someid
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我可以通过在我的代码中进一步将id列表转换为PHP中的数组来显示谁喜欢某个项目,但是我收到以下MySQL错误:

1242 - 子查询返回超过1行

我认为这有点使用GROUP_CONCAT而不是,例如,CONCAT?我是以错误的方式来做这件事的吗?


好的,感谢到目前为止的答案,这似乎有效.然而,有一个问题.如果该项目由该用户添加,则该项目也被视为最受欢迎.所以我需要额外的检查以检查creator = userid.有人可以帮我提出一个聪明(并希望有效)的方法吗?

谢谢!

编辑:我只是试图这样做:

SELECT [...] LEFT JOIN favourites ON (userid = itemid OR creator = userid)
Run Code Online (Sandbox Code Playgroud)

IDLIST是空的.请注意,如果我使用INNER JOIN而不是LEFT JOIN我得到一个空的结果.即使我确信有些行符合ON要求.

mysql sql group-concat mysql-error-1242

41
推荐指数
2
解决办法
7万
查看次数

MySQL基准测试

我正在尝试使用MySQL基准测试来测试一些查询.但是,我遇到了一个错误.

SELECT benchmark (10000, (select title from user));
Run Code Online (Sandbox Code Playgroud)

作为回报,我得到了这个错误;

ERROR 1242 (21000): Subquery returns more than 1 row
Run Code Online (Sandbox Code Playgroud)

有谁知道如何对查询进行基准测试?

谢谢

php mysql benchmarking mysql-error-1242

11
推荐指数
2
解决办法
1万
查看次数

#1242 - 子查询返回超过1行 - mysql

我正在尝试创建一个select语句,从MySQL数据库中选择图像名称.该表名为 - pictures_archive.我也试图根据他们的类别选择这些图片.代码是:

SELECT pictures_archive_filename FROM pictures_archive 
WHERE pictures_archive_id = (SELECT pictures_archive_id 
FROM pictures_archive_category WHERE pictures_category_id = 9)
Run Code Online (Sandbox Code Playgroud)

它给了我一个"#1242 - Subquery返回超过1行"的错误.我可以看到原因,但无法弄明白该怎么做.

mysql mysql-error-1242

5
推荐指数
1
解决办法
5万
查看次数

多行输出到MySQL中的变量

以下查询似乎仅在有一个dateOfBirth设置为的单个条目时才起作用1975-02-28.

当有多个记录符合此条件时,它会失败.

是否可以删除属性dateOfBirth设置为的用户的所有地址1975-02-28而不使用子查询?

SELECT @id:=(SELECT id
             FROM USER
             WHERE dateOfBirth='1975-02-28');
DELETE FROM Address
WHERE user_id=@id;
Run Code Online (Sandbox Code Playgroud)

我得到的确切错误是:Error Code: 1242 Subquery returns more than 1 row..

mysql subquery mysql-error-1242

5
推荐指数
1
解决办法
1万
查看次数

无法得到mysql子查询

我无法在Mysql中查询子查询.相当简单的是好的,我发现的大多数教程很少超出典型:

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
Run Code Online (Sandbox Code Playgroud)

我想从我的数据库中取出的是以下内容(我会尽力解释这个没有我们数据库的任何背景):

检索属于特定代表的客户列表和上个月(在一列中)花费的总金额以及在其他列中的当月支出金额.

结果,这看起来大致如下:

ID | NAME   | PREV MONTH | CUR MONTH
1  | foobar | £2300      | £1200
2  | barfoo | £1240      | £500
Run Code Online (Sandbox Code Playgroud)

查询我用来获取数据的第一部分如下:

SELECT c.id,c.name, SUM(co.invoicetotal) as total
FROM customers as c
JOIN customerorders as co on co.customer_id = c.id
WHERE c.salesrep_id = 24
AND co.orderdate BETWEEN DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND CURDATE()
GROUP by c.id
order by total desc
Run Code Online (Sandbox Code Playgroud)

DATE_SUB可以被实际日期替换,因为php变量最终会在这里.作为一个例子,这只是给我有效的数据.

这给了我,例如:

ID | …
Run Code Online (Sandbox Code Playgroud)

mysql sql subquery mysql-error-1242

4
推荐指数
1
解决办法
2115
查看次数

如果"子查询返回超过1行",则将其视为NULL

我正在尝试将newtable上的商店ID与来自维护者的ID同步:

UPDATE newtable t SET t.store_id = (SELECT store_id FROM maintable s 
WHERE t.state = s.state AND s.city = t.city AND t.name = s.name)
Run Code Online (Sandbox Code Playgroud)

每当子查询返回多行时,它就会出现"Subquery返回超过1行"的错误,但是当它返回零行时,子查询被认为没有返回任何内容,因此newtable上的store_id保持为NULL.这里没有什么新东西,它只是它的工作原理.

我想知道是否可以让子查询输出与没有匹配时的子查询输出相同,当它有多个匹配行时.

这样我就可以让store_id只为主表上的一个匹配行同步,并在子查询中出现多个匹配行时跳过.

mysql sql mysql-error-1242

3
推荐指数
1
解决办法
4063
查看次数

错误:#1242 - 子查询返回超过 1 行

我收到错误:#1242 - 当我运行此 sql 时,子查询返回超过 1 行。

CREATE VIEW test 
AS 
  SELECT cc_name, 
         COUNT() AS total, 
         (SELECT COUNT(*) 
            FROM bed 
           WHERE respatient_id > 0 
        GROUP BY cc_name) AS occupied_beds, 
         (SELECT COUNT(*) 
            FROM bed 
           WHERE respatient_id IS NULL 
        GROUP BY cc_name) AS free_beds 
    FROM bed 
GROUP BY cc_name; 
Run Code Online (Sandbox Code Playgroud)

mysql sql mysql-error-1242

2
推荐指数
1
解决办法
4万
查看次数

插入w /多个选择给出ERROR 1242:子查询返回多于1行

我有表foo1的列UserID,TimeStamp; foo2,列为userID,Level&table为foo3,列为userID,Timestamp.

我想从表foo2中存在UserID的foo3中插入foo1的所有行.

我收到错误1242:子查询返回超过1行以下

INSERT into foo1 (UserID,TimeStamp)
SELECT  
(SELECT UserID from foo2 as UserID),

(SELECT foo3.TimeStamp
from foo3
inner join foo2
ON foo3.UserID=foo2.UserID) as TimeStamp
Run Code Online (Sandbox Code Playgroud)

insert-into mysql-error-1242

2
推荐指数
1
解决办法
849
查看次数

id IN ID在UPDATE中不起作用

UPDATE statistics"
SET money = money + '$money'
WHERE member_id IN
((SELECT member_id FROM races WHERE l_id = '$mem_id'), $other_id)

这有什么问题?我想从比赛中检索所有member_ids,并且还包括到member_id $ other_id.没有$ other_id就行了.

顺便说一下,它给了我"Subquery返回超过1行"的错误.

php mysql mysql-error-1242

1
推荐指数
1
解决办法
1076
查看次数

帮助子查询!返回超过1行

我不理解返回多行的问题:

这是我的BBC表:

name    region  area    population  gdp
Afghanistan South Asia  652225  26000000    
Albania Europe  28728   3200000 6656000000
Algeria Middle East 2400000 32900000    75012000000
Andorra Europe  468 64000   
Angola  Africa  1250000 14500000    14935000000
etc.............................
Run Code Online (Sandbox Code Playgroud)

题:

列出包含"印度","伊朗"的地区的国家名称和地区.

这是我的发言:

select name from bbc where region = (select region from bbc where name='India' or name='Iran')
Run Code Online (Sandbox Code Playgroud)

它返回:

sql: errorSubquery returns more than 1 row
Run Code Online (Sandbox Code Playgroud)

我的陈述怎么了?答案应该是select语句中的select语句

谢谢!

mysql sql mysql-error-1242

0
推荐指数
1
解决办法
1136
查看次数