我陷入了子查询问题,试图在使用联接时获取多个列。
对于试图跟踪网站不同部分的通知系统,我试图根据“类型”字段的设置从其他表中获取不同的字段。
我希望我可以做这样的事情:
SELECT
n.`id`,
n.`last_date`,
IF(n.type = 'liked', (SELECT co.`article_id`, a.article_id FROM `articles_comments` co INNER JOIN `articles` a ON a.article_id = co.article_id WHERE co.`comment_id` = n.data_id), NULL),
n.`comment_id`,
n.`type`,
n.`data_id`,
FROM
`user_notifications` n
WHERE n.`owner_id` = 8505
问题是phpmyadmin给我一个错误“#1241-操作数应包含1列”
我很困惑,因为如果我不进行INNER JOIN,而只抓住“ article_id”,则效果很好。
答案 0 :(得分:0)
子查询只能返回一列
您可以看到this link
此查询
(SELECT a.article_id
FROM `article
s_comments` co
INNER JOIN `articles` a
ON a.article_id = co.article_id
WHERE co.`comment_id` = n.data_id)
必须是这样的
(SELECT a.article_id
FROM `article
s_comments` co
INNER JOIN `articles` a
ON a.article_id = co.article_id
WHERE co.`comment_id` = n.data_id)
UNION ALL
(SELECT co.`article_id`
FROM `article
s_comments` co
INNER JOIN `articles` a
ON a.article_id = co.article_id
WHERE co.`comment_id` = n.data_id)