gpt4 book ai didi

MySQL 选择不在

转载 作者:行者123 更新时间:2023-11-28 23:14:38 25 4
gpt4 key购买 nike

我有 table :

+----+--------------+--------------------------+
| id | user | mac |
+----+--------------+--------------------------+
| 3 | user003 | 148fc78371212b |
| 4 | user004 | |
| 5 | user005 | 171248fc78312d |
| 6 | user006 | 212e148fc78371 |
+----+--------------+--------------------------+

如果 mac 加密值在 mac 行中不重复,我只需要选择 ID。

如果例如:

  • user003 正在对表单 gui 进行编辑并保留旧的加密 mac 地址 148fc78371212b 它需要从 mysql 1 中的结果中获取计数

  • user003 正在对表单 gui 进行编辑并输入新的加密 mac 地址 212e148fc78371 它需要从 mysql 0 中的结果中获取计数(这样我就可以警告消息 Duplicate MAC address)

  • 我需要查询来检查用户是否不更改自己的 mac 地址以允许编辑(返回 1)以及用户是否更改 mac 地址并且该地址存在于另一个用户的 mac 地址中(返回 0)MAC 地址存在.

我尝试使用这个:

SELECT mac FROM users
WHERE user='user003' AND mac='148fc78371212b' OR mac NOT IN (SELECT mac FROM users);

但我总是得到计数结果 1...我不知道如何存档上面的结果?

所以我的查询在理论上需要看起来像这样:

SELECT mac FROM users WHERE user=? AND mac=? AND MAC DOES NOT EXISTS IN MAC 
FIELD EXCEPT WHERE user=? AND mac=? (so to exclude searching duplicate mac
on defined user)

最佳答案

如果每个 user 只有一条记录如果mac也是唯一的,那么你可以使用下面的查询:

SELECT mac,
CASE
WHEN user_with_newmac IS NULL THEN 2
WHEN user_with_newmac = user THEN 1
ELSE 0
END AS flag
FROM (
SELECT mac,
user,
(SELECT user FROM users WHERE mac = ? ) AS user_with_newmac
FROM users
WHERE user = ?) AS t

子查询(SELECT user FROM users WHERE mac = ? )返回具有 mac 地址的 new 值的用户(如果有)。外部查询使用这个值来计算标志:

  • 如果user_with_macNULL ,那么新的mac地址根本不存在。所以,2被退回。
  • 如果user_with_mac = user , 然后 mac 地址没有改变 1被退回。
  • 否则,如果user_with_mac <> user , 然后其他一些用户有 mac 地址,所以 0被退回。

Demo here

关于MySQL 选择不在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44434118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com