2011-06-12 5 views
1

두 부분으로 작동하는 SQL 쿼리를 수행하려고합니다.SQL SELECT 질문

먼저, 10 개의 ID 목록을 반환하는 쿼리가 있습니다. 하지만이 각각의 ID에 대해 WHERE 절이있는 SELECT 문이 필요합니다.

이것이 가능합니까?

SELECT * FROM tablenameWHERE id= (SELECT id FROM table_of_ids WHERE 
    tableid='1a177de1-3f25c9b7910b' OR 
    tableid='64faecca-133af807a65a' OR 
... up to 10 Ids) 

을하지만, 1 행보다 하위 쿼리 반환라는 오류와 함께 반환

나는 시도했다.

table_of_ids의 tableid와 id 열은 다른 값입니다.

누구든지 이것을 수행하는 방법을 알고 있습니까? 나 자신을 잃어 버리는 것 같다.

중요한 경우 mySQL과 PHP를 사용하고 있습니다.

건배, 브렛

답변

3

아니 매우 최적화 된 쿼리,하지만 당신은 IN 대신 사용할 수 =의에

SELECT * FROM tablename WHERE id IN (SELECT id FROM table_of_ids WHERE 
    tableid='1a177de1-3f25c9b7910b' OR 
    tableid='64faecca-133af807a65a' OR 
... up to 10 Ids) 
+0

어떻게 최적화 하시겠습니까? – Brett

0

IN 키워드로 =를 교체합니다.

select * from sometable where key in (subselect that returns one column) 
2

변경을() 당신이 할 수처럼

WHERE id IN (SELECT id ...) 
0

가 보이는;

SELECT * 
FROM tablename 
    INNER JOIN table_of_ids ON table_of_ids.id = tablename.id 
WHERE table_of_ids.tableid IN (
    '1a177de1-3f25c9b7910b', 
    '64faecca-133af807a65a', 
...) 
0

"="연산자를 사용하지 말고 "IN"연산자를 사용하십시오. 예를 들어 tutorial을 참조하십시오.

0

IN 키워드를 사용하십시오.

SELECT * FROM user WHERE Id IN(SELECT userId FROM table). 

ID는 첫 번째 테이블의 기본 키와 userId를이 사촌의 두 번째 테이블의 외래 키입니다.