我正在尝试执行分为两部分的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。
干杯, 布雷特
答案 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的第二个表中的外键。