Mysql sql:使用单个查询选择另一列中具有相同列值的行

Mysql sql:使用单个查询选择另一列中具有相同列值的行,mysql,sql,Mysql,Sql,示例表: id | value ---------- 1 | abc 1 | cb3 1 | dsf 2 | sss 2 | d3 因此,如果输入是cb3,我想得到id为1的所有行,如果输入是sss,我想得到id为2的所有行。这可以用一个查询而不是两个查询来完成吗?第一个查询是find id,第二个查询为find id带来行。另外,一个查询方法会更快吗 提前感谢。请尝试以下操作,将“sss”替换为您正在搜索的值: select * from table t1 where t1.id

示例表:

id | value
----------
1  | abc
1  | cb3
1  | dsf
2  | sss
2  | d3
因此,如果输入是cb3,我想得到id为1的所有行,如果输入是sss,我想得到id为2的所有行。这可以用一个查询而不是两个查询来完成吗?第一个查询是find id,第二个查询为find id带来行。另外,一个查询方法会更快吗


提前感谢。

请尝试以下操作,将“sss”替换为您正在搜索的值:

select * from table t1
where t1.id in (select id from table t2 where value = 'sss')

请注意,值似乎不是键,因此您可能会在结果中获得两组不同的ID。这也是我在select id中提出t1.id的原因。。。不要使用t1.id=select id…

尝试以下操作,将“sss”替换为正在搜索的值:

select * from table t1
where t1.id in (select id from table t2 where value = 'sss')
请注意,值似乎不是键,因此您可能会在结果中获得两组不同的ID。这也是我在select id中提出t1.id的原因。。。您可以尝试以下方法,而不是t1.id=select id…

SELECT * 
FROM TABLE my_table 
WHERE id IN (SELECT id 
         FROM TABLE my_table 
         WHERE value = input
         )
你可以试试这个:

SELECT * 
FROM TABLE my_table 
WHERE id IN (SELECT id 
         FROM TABLE my_table 
         WHERE value = input
         )
您也可以使用内部联接来解决它

您也可以使用内部联接来解决它


从word input,您需要存储过程吗?从word input,您需要存储过程吗?我可以问一下为什么是t1和t2吗?只是打字错误?不是打字错误;在同一个查询中多次使用同一个表时,通常使用别名。在这种情况下,它不相关,因为查询不相关。但在许多情况下,一个人可能会有奇怪的行为,因为一个属性实际上指的是一个不同的上下文,我可以问一下为什么是t1和t2吗?只是打字错误?不是打字错误;在同一个查询中多次使用同一个表时,通常使用别名。在这种情况下,它不相关,因为查询不相关。但在许多情况下,一个人可能会有奇怪的行为,因为一个属性实际上指的是一个不同的上下文。