【问题标题】:Fetch unique data from db从数据库中获取唯一数据
【发布时间】:2013-10-07 12:32:23
【问题描述】:

我在名为“users”的表中有一个名为“alerts”的数据库列,其中输入了每个用户的警报数据,例如;

UserA -> 1,2,3,4,5,6
UserB -> 33,44,22
UserC -> 333,444,555

逗号分隔的数字是pid(Post ID)

现在我想获取具有特定“pid”的用户,例如444

我正在使用这个查询;

$query = $db->query("SELECT uid FROM users WHERE alerts LIKE '%{$pid}%'");
$uid = $db->fetch_array($query);

现在的问题是,它确实获取了用户,但不是唯一的。例如,如果我正在搜索 pid = 444,那么它会获取所有那些在警报列中具有“4”的用户。我应该如何搜索唯一身份用户?

【问题讨论】:

  • 你需要规范化这个数据。
  • 必须是多值列周。
  • 但是为什么是 -1 ? :/ 英语是我的第二语言,可能这就是我无法正确解释问题的原因..
  • 不是我,虽然下次有人使用多值列时,我将设置“user1,user2,user3,user4,....user10000”帐户和投票给他们死...

标签: php mysql unique


【解决方案1】:

使用这个:

$query = $db->query("SELECT uid FROM users WHERE FIND_IN_SET('{$pid}',alerts);

FIND_IN_SET(str,strlist)

【讨论】:

  • 现在我不知道我是对这个设施的存在感到高兴,还是对有人认为它应该存在感到沮丧。 :(
【解决方案2】:

如果你不能修复你的设计以摆脱多值列。

Like '4' or Like '4,%' or like '%,4,' or like '%,4' 会这样做。

现在您知道为什么更有经验的开发人员在看到有人再次犯此错误时会畏缩......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 2020-05-05
    • 2023-03-28
    相关资源
    最近更新 更多