[英]php mysql select all with same data
我有一个包含3个cols的表,增加了id,name和data
我想要实现的目标
你输入$ name ...并返回$ data ...
然后它需要$ data并找到具有相同$ data的所有$ name。
SELECT * FROM table WHERE name ='$name' data='$data' and data!='0'
似乎没有削减它..
我基本上试图获得与输入的$ name的$ data具有相同数据的所有行。
提前致谢。
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' )
如果您必须在一个查询中执行此操作,请尝试自己加入表:
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')
我推荐嵌套查询。 它更容易阅读。
您发布的原始查询有什么问题,因为您错过了“与”。 但它也不会做你想说的那样。
您可能想尝试以下方法:
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)
@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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.