我认为需要子查询

时间:2014-04-21 15:08:26

标签: php mysql

我昨天问了这个问题,并且正在重新发布一个非常简单的版本来确保 对于我的尝试没有混淆。

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&乔。

3 个答案:

答案 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'