多条记录匹配一列,但筛选另一列


Mutliple records match one column but filter on other column

我甚至不知道该怎么问,但让我试一试。

我有一张桌子,我们称之为小部件。在每个小部件的这个表中,我将有几个记录,其中包括各种数据,但这个小部件的每个记录都有相同的小部件标识符。

如果其中一条记录包含其他特定数据,我如何才能选择此小部件。

示例:

---------------------------------
| widgetid | status             |
|--------------------------------
| 54345    | added to inventory |
|-------------------------------|
| 54345    | sold               |
|-------------------------------|
| 58879    | added to inventory |
---------------------------------

因此,在上表中,我只想选择54345小部件,因为它是唯一一个具有匹配"已售出"状态的小部件。

这里的问题是,我在查询时不会知道小部件id,因为它是动态生成的。

我确信我错过了一些非常愚蠢的东西,但在处理了一段时间,没有找到帮助搜索后,我想是时候把它扔出去,看看你们这些好人怎么想了。

如果重要的话,使用MySQL。

SELECT w1.*
FROM Widgets w1
JOIN Widgets w2
ON w1.widgetid = w2.widgetid
WHERE w2.status = "sold"
SELECT widgetid FROM widgets WHERE status= 'sold'

这可以为您完成

试试这个:

SELECT widgetid 
FROM widgets
WHERE status='sold'

DevZer0的解决方案不仅包含一个错误(缺少表名),而且只返回"已售出"状态的记录。我想你是在寻找所有带有"已售出"状态的widgetid的唱片。试试这个:

SELECT * FROM widgets WHERE widgetid IN (SELECT widgetid FROM widgets WHERE status = 'sold')