SQL SELECT问题

时间:2011-06-12 12:30:23

标签: php mysql sql mysql-error-1242

我正在尝试执行分为两部分的SQL查询。

首先,我有一个返回10个ID的列表的查询。 但是我希望有一个SELECT语句,其中包含这些10个ID中的WHERE个句子。

这可能吗?

我试过了:

    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。

干杯, 布雷特

6 个答案:

答案 0 :(得分: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)

答案 1 :(得分:2)

将其更改为()

WHERE id IN (SELECT id ...)

答案 2 :(得分:0)

=替换为IN关键字。

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

答案 3 :(得分: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',
... )

答案 4 :(得分:0)

不要使用“=”运算符,请使用“IN”运算符。 有关示例,请参阅此tutorial

答案 5 :(得分:0)

使用IN关键字。

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

Id是第一个表的主键,userId是coz的第二个表中的外键。

相关问题