2012-11-15 33 views
1

我有两张表。我想绘制第一个表的样本,除了第一个表中的人也在第二个表中。做这个看似简单的查询有困难。PHP/MYSQL查询如果不在第二张表

表用户

id|name 

表catuser

id|userid|catid 

我已经试过

SELECT u.*,c.userid FROM `users` u 
LEFT JOIN `catuser` c 
ON (u.id = c.userid AND c.userid <> '197') 
WHERE u.id = '1' 

和变化都无济于事。将不胜感激任何建议。

回答

2

abt。这样的:

SELECT u.*,c.userid 
FROM `users` u 
LEFT JOIN `catuser` c 
ON u.id = c.userid 
WHERE u.id = '1' 
AND c.userid <> '197' 
AND c.userid is null 
0

如果你想查询只显示有一个或多个类别的用户,你可以使用一个WHERE EXISTS查询:

SELECT u.* FROM `users` u 
WHERE EXISTS (SELECT * FROM catuser WHERE catuser.userid = u.id) 

另一种可能性是做一个左连接,并检查是否如果在catuser中没有对应的行,则所有catuser字段都将为空。通过检查c.id是否不为空,您只包含具有类别的行。

请注意,如果连接处于多个类别中,则连接可能会多次返回用户。

2
SELECT * FROM users WHERE id NOT IN (SELECT DISTINCT userid FROM catuser) 
相关问题