数据库将两个查询合并为一个

时间:2012-03-28 19:52:05

标签: mysql select combinations

我的表有2个字段userId和ebayitemId。以下是数据库中的表格:

userId     | ebayitemId
12         | 1
12         | 2
12         | 3
12         | 4

在我的情况下,客户端向ebayitemId发出请求以查看此用户列出的其他项目。(ebayitemId是唯一的)。到目前为止,我使用两个查询来选择用户列出的所有项目。第一个查询是

SELECT userId WHERE ebayitemId = '1'

这个查询让我获得EBAYITEMID的USERID。

第二个查询是

SELECT ebayitemId WHERE userId = '$userid' 

这给了我ebayitemId 1,2,3和4。

我的问题:有没有办法将这两个查询合并为一个查询以获得上述结果,因为只涉及一个表?

3 个答案:

答案 0 :(得分:0)

可以用

完成
SELECT ebayitemId from table WHERE userId in (SELECT userId from table WHERE ebayitemId = '1')

答案 1 :(得分:0)

天真:

SELECT ebayitemId
FROM yourtable
WHERE userId IN (
    SELECT userId
    FROM yourtable
    WHERE ebayitemId = '1'
)

请注意,还有其他方法可以使用连接等对此猫进行换肤。

答案 2 :(得分:0)

查询:

SELECT iu.ebayitemId
FROM t_items AS iu
INNER JOIN t_items AS ii ON (iu.userId=ii.userId)
WHERE (ii.ebayitemId= $item )

如果您不想选择第一个项目:

SELECT iu.ebayitemId
FROM t_items AS iu
INNER JOIN t_items AS ii ON (iu.userId=ii.userId)
WHERE (ii.ebayitemId= $item )
AND (iu.ebayitemId<>ii.ebayitemId)

注意:IN语句的优化程度会降低。