我正在使用MYSQL并且无法使用多个JOINS进行NOT LIKE。 我有3个表,看起来像这样:
父母(表1):
+------------+-------+-----+
| ParentID | Name | AGE |
+------------+-------+-----+
| 1 | Peter | 26 |
| 2 | Karl | 33 |
| 3 | Tessa | 43 |
+------------+-------+-----+
儿童(表2):
+------------+-------+-----+
| KidID | Name | AGE |
+------------+-------+-----+
| 1 | Mike | 3 |
| 2 | Mike | 13 |
| 3 | Jenna | 4 |
| 4 | Jessi | 14 |
+------------+-------+-----+
Parents_Kids(表3):
+-----------+-------+
| ParentID | KidID |
+-----------+-------+
| 1 | 2 |
| 1 | 4 |
| 2 | 1 |
| 3 | 3 |
+-----------+-------+
现在我想得到所有没有名叫Mike的孩子的父母姓名或任何形式的Mike。
我试过了:
SELECT p.name
FROM PARENTS p JOIN
Parents_Kids pk
ON pk.ParentID = p.ParentID JOIN
Kids k
ON k.KidID = pk.KidID
WHERE k.Name NOT LIKE '%mike%';
但是这个查询的结果是错误的。 如果我用LIKE尝试这个查询它可以正常工作,但不能用NOT LIKE。
答案 0 :(得分:3)
我认为如果他/她的孩子中至少有一个像迈克这样的名字,你就不想选择父母。您可以使用quick_exit
来过滤此类案例。
having
答案 1 :(得分:0)
您说您的查询与LIKE
一起正常运行,因此获取其他父名称的方法是:
SELECT name
FROM parents
WHERE name not in (SELECT p.name
FROM PARENTS p JOIN
Parents_Kids pk
ON pk.ParentID = p.ParentID JOIN
Kids k
ON k.KidID = pk.KidID
WHERE k.Name LIKE '%mike%')