[SQL] MySQL의 - 피연산자 1 열 (들)을 포함해야
SQLMySQL의 - 피연산자 1 열 (들)을 포함해야
내가 만드는거야 시스템에서 작업하는 동안, 나는 내 프로젝트에서 다음 쿼리를 사용하려고 :
SELECT
topics.id,
topics.name,
topics.post_count,
topics.view_count,
COUNT( posts.solved_post ) AS solved_post,
(SELECT users.username AS posted_by,
users.id AS posted_by_id
FROM users
WHERE users.id = posts.posted_by)
FROM topics
LEFT OUTER JOIN posts ON posts.topic_id = topics.id
WHERE topics.cat_id = :cat
GROUP BY topics.id
"고양이는"나는 PDO를 사용하고 나의 PHP 코드에 의해 바인딩됩니다. "고양이"2에 대한 유효한 값입니다.
나에게 오류 제공하지만 그 쿼리 : "# 1241 - 피연산자가 1 열 (들)을 포함해야"
어떤 날 젊고 아름다운 것은 내가이 쿼리는 아무 문제가 작동하지 않을 것이라고 생각한다는 것입니다. 다음 다른 테이블에서 두 가지 이상을 선택, 열을 선택하고 거기에서 계속. 난 그냥 문제가 무엇인지 알아낼 수 없습니다.
이에 대한 간단한 수정, 또는 내 쿼리를 작성하는 또 다른 방법이 있습니까?
해결법
-
==============================
1.당신은 (외부 SELECT 절의 일환으로) 하나의 열을 프로젝트에 사용하는 동안 귀하의 하위 쿼리는 두 개의 열을 선택하는 것입니다. 당신은이 상황에서 같은 쿼리에서 하나의 열을 선택할 수 있습니다.
당신은 (외부 SELECT 절의 일환으로) 하나의 열을 프로젝트에 사용하는 동안 귀하의 하위 쿼리는 두 개의 열을 선택하는 것입니다. 당신은이 상황에서 같은 쿼리에서 하나의 열을 선택할 수 있습니다.
대신 사용자 테이블에 합류 고려; 당신이 사용자로부터 원하는 열을 선택할 때 이것은 당신에게 더 많은 유연성을 제공 할 것입니다.
SELECT topics.id, topics.name, topics.post_count, topics.view_count, COUNT( posts.solved_post ) AS solved_post, users.username AS posted_by, users.id AS posted_by_id FROM topics LEFT OUTER JOIN posts ON posts.topic_id = topics.id LEFT OUTER JOIN users ON users.id = posts.posted_by WHERE topics.cat_id = :cat GROUP BY topics.id
-
==============================
2.실수로 대신하고 조인의 ON 절에 쉼표를 사용하는 경우이 오류가 발생할 수 있습니다 :
실수로 대신하고 조인의 ON 절에 쉼표를 사용하는 경우이 오류가 발생할 수 있습니다 :
JOIN joined_table ON (joined_table.column = table.column, joined_table.column2 = table.column2) ^ should be AND, not a comma
-
==============================
3.
COUNT( posts.solved_post ) AS solved_post, (SELECT users.username AS posted_by, users.id AS posted_by_id FROM users WHERE users.id = posts.posted_by)
글쎄, 당신은 그런 하나 개의 하위 쿼리에서 여러 열을 얻을 수 없습니다. 다행히, 두 번째 열은 이미 posts.posted_by입니다! 그래서:
SELECT topics.id, topics.name, topics.post_count, topics.view_count, posts.posted_by COUNT( posts.solved_post ) AS solved_post, (SELECT users.username AS posted_by_username FROM users WHERE users.id = posts.posted_by) ...
-
==============================
4.실수로 WHERE 절에 = 대신 IN으로 사용하는 경우이 오류가 발생할 수 있습니다 :
실수로 WHERE 절에 = 대신 IN으로 사용하는 경우이 오류가 발생할 수 있습니다 :
예를 들어 :
WHERE product_id = (1,2,3);
-
==============================
5.이 오류가 일어날 수있는 또 다른 장소는 문자열의 쉼표 외부에있는 값을 할당한다. 예를 들면 :
이 오류가 일어날 수있는 또 다른 장소는 문자열의 쉼표 외부에있는 값을 할당한다. 예를 들면 :
SET totalvalue = (IFNULL(i.subtotal,0) + IFNULL(i.tax,0),0)
-
==============================
6.실수로 함수 이름 경우 놓칠 경우에도이 오류가 발생할 수 있습니다.
실수로 함수 이름 경우 놓칠 경우에도이 오류가 발생할 수 있습니다.
예를 들어 :
set v_filter_value = 100; select f_id, f_sale_value from t_seller where f_id = 5 and (v_filter_value <> 0, f_sale_value = v_filter_value, true);
나는 퍼팅 놓친 때이 문제를 얻은 경우 기능의 경우!
-
==============================
7.
(SELECT users.username AS posted_by, users.id AS posted_by_id FROM users WHERE users.id = posts.posted_by)
하위 쿼리를 사용하면 여기에 있지만 하위 쿼리는 하나의 컬럼을 반환해야합니다. 그것은 것 쇼 오류 그렇지 않으면를 분리합니다.
from https://stackoverflow.com/questions/14046838/mysql-operand-should-contain-1-columns by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 왜 MySQL은 집계 함수없이 쿼리 "에 의해 그룹을"할 수 있습니까? (0) | 2020.03.27 |
---|---|
[SQL] 인간화 또는 자연수 혼합 된 단어 및 번호 문자열의 정렬 (0) | 2020.03.27 |
[SQL] SQL CASE 표현식 구문? (0) | 2020.03.27 |
[SQL] 마이크로 소프트 SQL 서버 2000 에뮬레이션 MySQL의 LIMIT 절 (0) | 2020.03.27 |
[SQL] SQL은 : 테이블에 ID를 누락을 발견 한 (0) | 2020.03.27 |