多个记录匹配一列但过滤其他列

时间:2013-07-16 06:24:42

标签: php mysql sql database

我真的不确定如何问这个,但让我试一试。

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

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

示例:

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

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

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

我确信我错过了一些非常愚蠢的东西,但是在弄乱了一段时间并且没有找到帮助搜索之后,我认为是时候把它扔出去看看你们有多好想了。

如果重要,请使用MySQL。

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

SELECT widgetid FROM widgets WHERE status= 'sold'

这可以为你做到

答案 2 :(得分:0)

试试这个:

SELECT widgetid 
FROM widgets
WHERE status='sold'

答案 3 :(得分:0)

DevZer0的解决方案不仅包含一个错误(表名丢失),它还只会返回“已售出”状态的记录。我假设你已经记录了所有带有“已售出”状态的小工具的记录。试试这个:

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