Mysql:如何从 ENUM 中检索一个字段不包含特定值的行列表
Mysql : how to retrieve a list of row where one field doesn't contain a specific value from an ENUM
我有一个 table,其中列出了用户相册。
主键、用户键、类型和标题。
TYPE 字段是一个 ENUM。
通常每个用户都有一个 'avatar' 类型的条目在注册时自动创建,但似乎没有。
我想要一个可以输出没有任何 'avatar' 类型条目关联的用户密钥的查询。
我认为这个查询可以解决问题:
SELECT * FROM (
SELECT DISTINCT user_key FROM `album` WHERE 1
) a
OUTER JOIN (
SELECT user_key FROM `album` WHERE type = 'avatar'
) b
ON a.user_key = b.user_key
目标是 select 来自 table 的每个不同用户,然后是每个具有 'avatar' 条目的用户,最后进行外部连接以便仅检索没有该条目的用户。
通过内部联接,我得到了包含此条目的正确用户列表(这没有解决我的问题),但是通过外部联接,我得到了语法错误。
我是不是在使用外连接时出错了,还是有更聪明的方法来获得我想要的东西?
谢谢。
如果我对这个问题的理解正确,您只需要 user_key 列用于所有类型不是 'avatar'
的用户
SELECT DISTINCT(user_key) FROM album WHERE type IS NOT IN ('avatar')
MySQL中没有"OUTER JOIN"! ,您应该使用 "LEFT | RIGHT JOIN",对于完整的外部联接,您可以像这样 UNION 它们:
SELECT * FROM table1 a
LEFT JOIN table2 b ON a.user_key = b.user_key
UNION
SELECT * FROM table1 a
LEFT JOIN table2 b ON a.user_key = b.user_key
但似乎不需要加入选择!,如果你想获得类型字段中没有 'avatar' 的用户列表,你应该这样做:
SELECT DISTINCT(user_Key) FROM albums WHERE Type <> 'avatar'
AND user_key NOT IN (Select DISTINCT(user_key) FROM albums WHERE Type = 'avatar');
ENUM 类型不需要使用"NOT IN",因为ENUM 类型只有一个值,而SET 类型有一些值
我有一个 table,其中列出了用户相册。
主键、用户键、类型和标题。
TYPE 字段是一个 ENUM。
通常每个用户都有一个 'avatar' 类型的条目在注册时自动创建,但似乎没有。
我想要一个可以输出没有任何 'avatar' 类型条目关联的用户密钥的查询。
我认为这个查询可以解决问题:
SELECT * FROM (
SELECT DISTINCT user_key FROM `album` WHERE 1
) a
OUTER JOIN (
SELECT user_key FROM `album` WHERE type = 'avatar'
) b
ON a.user_key = b.user_key
目标是 select 来自 table 的每个不同用户,然后是每个具有 'avatar' 条目的用户,最后进行外部连接以便仅检索没有该条目的用户。
通过内部联接,我得到了包含此条目的正确用户列表(这没有解决我的问题),但是通过外部联接,我得到了语法错误。
我是不是在使用外连接时出错了,还是有更聪明的方法来获得我想要的东西?
谢谢。
如果我对这个问题的理解正确,您只需要 user_key 列用于所有类型不是 'avatar'
的用户SELECT DISTINCT(user_key) FROM album WHERE type IS NOT IN ('avatar')
MySQL中没有"OUTER JOIN"! ,您应该使用 "LEFT | RIGHT JOIN",对于完整的外部联接,您可以像这样 UNION 它们:
SELECT * FROM table1 a
LEFT JOIN table2 b ON a.user_key = b.user_key
UNION
SELECT * FROM table1 a
LEFT JOIN table2 b ON a.user_key = b.user_key
但似乎不需要加入选择!,如果你想获得类型字段中没有 'avatar' 的用户列表,你应该这样做:
SELECT DISTINCT(user_Key) FROM albums WHERE Type <> 'avatar'
AND user_key NOT IN (Select DISTINCT(user_key) FROM albums WHERE Type = 'avatar');
ENUM 类型不需要使用"NOT IN",因为ENUM 类型只有一个值,而SET 类型有一些值