我正在尝试选择Meta列中没有'bar'的所有行的User_ID。
ID User_ID Meta
1 User1 foo
2 User2 foo
3 User2 bar
4 User3 foo
5 User4 foo
6 User4 bar
然而,我无法上班。我可以通过10种不同的方式获得具有'bar'的User_Id,但无法弄清楚这一点。这些都不起作用:
SELECT User_ID
FROM t
WHERE NOT EXISTS (SELECT * FROM t
WHERE t.meta = 'bar') )
以上产生了所有用户,在Meta列中有和没有'bar'。
SELECT User_ID
FROM t
WHERE t.meta <> 'bar'
以上产生了所有用户,在Meta列中有和没有'bar'。
期望的输出应该是:
User1
User3
答案 0 :(得分:0)
您可以尝试在具有t.meta ='bar'
的User_ID的结果中输入NOTSELECT distinct User_ID
FROM t
WHERE User_ID NOT IN (
SELECT User_ID
FROM t
WHERE trim(t.meta) = 'bar')
如果您需要不同的结果,请使用distinct子句
答案 1 :(得分:0)
以下是如何操作:
SELECT A.USER_ID
FROM T A
WHERE NOT EXISTS
(SELECT NULL FROM T B WHERE A.USER_ID=B.USER_ID AND B.META='bar');
在SQL Fiddle上看到它。
答案 2 :(得分:0)
SELECT User_ID FROM t WHERE NOT Meta = 'bar';
答案 3 :(得分:0)
如果我理解正确
也许这个查询可以帮到你
SELECT u.user_id
FROM users u
WHERE NOT EXISTS (
SELECT 1
FROM users v
WHERE v.meta = 'bar'
AND u.user_id = v.user_id
)