0

我什至不确定如何问这个,但让我试一试。

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

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

例子:

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

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

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

我确信我错过了一些非常愚蠢的东西,但是在搞砸了一段时间并且没有找到任何帮助搜索之后,我认为是时候把它扔在那里,看看你们这些好人是怎么想的。

如果这很重要,请使用 MySQL。

4

4 回答 4

5
SELECT w1.*
FROM Widgets w1
JOIN Widgets w2
ON w1.widgetid = w2.widgetid
WHERE w2.status = "sold"
于 2013-07-16T06:29:26.417 回答
1
SELECT widgetid FROM widgets WHERE status= 'sold'

这可以为你做

于 2013-07-16T06:28:49.387 回答
0

试试这个:

SELECT widgetid 
FROM widgets
WHERE status='sold'
于 2013-07-16T06:30:00.280 回答
0

DevZer0 的解决方案不仅包含一个错误(缺少表名),而且只会返回“已售出”状态的记录。我假设您在所有具有“已售”状态的小部件ID 的记录之后。尝试这个:

SELECT * FROM widgets WHERE widgetid IN (SELECT widgetid FROM widgets WHERE status = 'sold')
于 2013-07-16T06:30:41.177 回答