php mysql选择具有相同数据的所有内容

时间:2010-08-14 00:34:40

标签: php mysql

我有一个包含3个cols的表,增加了id,name和data

我想要实现的目标

您输入$ name ...并返回$ data ...
然后 它需要$ data并查找具有相同$ data的所有$ name。

SELECT * FROM table WHERE name ='$name' data='$data' and data!='0'

似乎没有削减它..

我基本上试图获取与输入的$ name的$ data具有相同数据的所有行。

提前感谢。

3 个答案:

答案 0 :(得分:2)

SELECT * FROM table WHERE name ='$name' and data='$data' and data!='0'

您错过了and

编辑:

select * from table where
 name in 
   ( select data from table where name = '$name' )

答案 1 :(得分:2)

如果您必须在一个查询中执行此操作,请尝试自行加入表格:

SELECT * FROM table t1,table t2 WHERE t1.name = '$name' AND t1.data=t2.data AND t1.name != t2.name

或者,使用嵌套查询:

SELECT name FROM table WHERE data IN (SELECT data FROM table WHERE name='$name')

我推荐嵌套查询。它更容易阅读。

您发布的原始查询有什么问题,因为您错过了“与”。但它也不会按照你想要的那样做。

答案 2 :(得分:1)

您可能需要尝试以下操作:

SELECT  t2.name
FROM    `table` t1
JOIN    `table` t2 ON (t2.data = t1.data)
WHERE   t1.name = '$name' AND t1.data != '0';

测试用例:

CREATE TABLE `table` (id int, name varchar(10), data varchar(10));

INSERT INTO `table` VALUES (1, 'name1', 'data-a');
INSERT INTO `table` VALUES (2, 'name2', 'data-b');
INSERT INTO `table` VALUES (3, 'name3', 'data-a');
INSERT INTO `table` VALUES (4, 'name4', 'data-b');
INSERT INTO `table` VALUES (5, 'name5', 'data-a');

结果:

SELECT  t2.name
FROM    `table` t1
JOIN    `table` t2 ON (t2.data = t1.data)
WHERE   t1.name = 'name2' AND t1.data != '0';

+-------+
| name  |
+-------+
| name2 |
| name4 |
+-------+
2 rows in set (0.00 sec)

嵌套查询解决方案suggested by @Borealid是另一个返回相同结果的有效解决方案:

SELECT  name 
FROM    `table` 
WHERE   data IN (SELECT data FROM `table` WHERE name = 'name2');

+-------+
| name  |
+-------+
| name2 |
| name4 |
+-------+
2 rows in set (0.00 sec)