繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM