MySQL SELECT问题 - 可能很简单
所以我目前正面临一个问题。我想从我的表中选择一行(dlUser)。问题是当Active设置为'No'时,我们会重新使用dlUser号码。我将尝试使用下面的示例表来解释:MySQL SELECT问题 - 可能很简单
| ID | Active | dlUser |
-------------------------------------
| 1 | Yes | 100 |
| 2 | No | 100 |
| 3 | No | 101 |
| 4 | No | 101 |
所以我想选择dlUser其中主动=“没有”,但也是在Active是也不是。因此,我希望在这里获得的输出将是dlUser:101(因为它目前不在使用中,因此可以再次使用)。我们每次只能有一个dlUser号码“有效”。
任何援助将不胜感激。
预先感谢您。
听起来好像你想要选择那些在任何行上都没有被激活的队列。这是一个简单的“NOT IN”查询,您可以在其中选择“不在”活动用户列表中的所有dlUsers。
试试这样说:
SELECT DISTINCT dlUser
FROM t
WHERE NOT dlUser NOT IN
(SELECT dlUser
FROM t
WHERE Active = 'Yes')
Hiya @kbball, 由于某种原因,这会返回Active = Yes和Active = No值? 关于为什么会出现这种情况的任何想法? 编辑评论:混淆了两个答案对不起! – DisplayName
我相信下面的应该满足我你的问题的理解。在表例子,你给它只会返回dblUser 101
SELECT a.dlUser
FROM `yourtable` a
WHERE a.Active = 'No'
AND a.dblUser NOT IN (SELECT dlUser FROM `yourtable` WHERE a.Active = 'Yes') GROUP BY a.dlUser;
如果你正在构建什么可能会成为一个非常大的表,然后我不建议这样做的这个方法,因为查询将开始趋于落后。
您的第一个WHERE子句不是必需的,如果您不使用SELECT DISTINCT,那么最终会出现重复项,但其他方式相同 – kbball
对于重复项,您绝对是对的。修复。谢谢。关于第一个where子句,在某些版本中,在动态临时表限制之前,我得到了更好的结果并带有索引限制。 –
Hiya @Aunt Jamaima,谢谢你的回复。 这似乎是返回值为零,即使我100%确信有dlUser号码当前设置为活动=否为所有用户。 – DisplayName
您可以为每个“dlUser”选择“Active”的不同值。如果结果只返回'否',就像dlUser 101的情况那样,你知道你可以重用它。 – PhillipD