SQL SELECT问题
问题描述:
我试图执行一个SQL
查询,该查询分为两部分。SQL SELECT问题
首先,我有一个查询返回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。
干杯, 布雷特
答
不是一个非常优化的查询,但你可以在不是使用=
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)
答
与IN
关键字替换=
。
select * from sometable where key in (subselect that returns one column)
答
其更改为在()
WHERE id IN (SELECT id ...)
答
貌似可以;
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',
...)
答
使用IN关键字。
SELECT * FROM user WHERE Id IN(SELECT userId FROM table).
Id是第一个表的主键,userId是第二个表中的外键。
您如何建议优化它? – Brett 2011-06-12 12:34:04