我昨天问了这个问题,并且正在重新发布一个非常简单的版本来确保 对于我的尝试没有混淆。
adam toyota
joe toyota
rick mazda
SELECT * FROM table WHERE
name LIKE adam
and also return rows where name is not adam but have the same car as adam.
因此搜索adam会返回行:adam&乔。
答案 0 :(得分:2)
SELECT * FROM `table` WHERE `name` = 'adam'
OR car IN (
SELECT car FROM `table` WHERE `name` = 'adam'
)
"名称不是亚当,而是"部分并没有真正意义,因为无论如何你都会得到所有的adams。
答案 1 :(得分:2)
你的查询不需要有两个部分,一个就可以得到所有部分(Adam的行总是会被返回......因为Adam拥有的汽车总是与Adam的行{{1}匹配}):
:)
或SELECT *
FROM table
WHERE car IN (
SELECT car
FROM table
WHERE name = 'adam'
)
版本,在MySQL上可能会或可能没有更好的表现:
JOIN
答案 2 :(得分:1)
SELECT * FROM `cars` WHERE
car = (
SELECT car FROM `cars` WHERE `name` = 'adam'
)
http://sqlfiddle.com/#!2/0f845/2
并为adam问题覆盖零车
SELECT * FROM `cars` WHERE
car = (
SELECT car FROM `cars` WHERE `name` = 'adam'
)
OR
`name` = 'adam'