1

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

首先,我有一个返回 10 个 ID 列表的查询。但是然后我想要一个SELECT声明,其中包含WHERE这 10 个 id 中的每一个的子句。

这可能吗?

我试过了:

    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。

干杯,布雷特

4

6 回答 6

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)
于 2011-06-12T12:32:58.973 回答
2

将其更改为 in()

WHERE id IN (SELECT id ...)
于 2011-06-12T12:33:32.117 回答
0

=IN关键字替换。

select * from sometable where key in (subselect that returns one column)
于 2011-06-12T12:32:55.483 回答
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',
... )
于 2011-06-12T12:33:49.783 回答
0

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

于 2011-06-12T12:34:49.073 回答
0

使用 IN 关键字。

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

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

于 2011-06-12T12:35:14.493 回答