2016-12-28 21 views
0
SELECT * FROM users WHERE uid IN (SELECT doctors FROM MainPage WHERE Valid=1) 

用户表uid datatype=INT,网主页表医生datatype=text与值1,2,3,4,5在MySQL操作上的绳子

当我运行上面的查询,它只是造成1行这是为uid=1。是否有任何其他操作符或查询更改可以从用户表中检索到所有5行?

+1

用户表是否有用于id 1,2,3,4,5的行? – GurV

+0

子查询的输出是什么? – Jordon

回答

3

FIND_IN_SET()函数在以逗号分隔的列表中搜索值。再加上一个JOIN,你应该得到你想要的东西:

SELECT * 
    FROM users 
    JOIN MainPage ON FIND_IN_SET(uid, doctors) 
WHERE Valid = 1; 

仅供参考,这是设计你的表走错了路。每个连接都应该在单独的行上定义。如果它是一个多对多的关系,那将需要一个带有复合键的单独表格。

+1

感谢shmosel,它完美无缺:) – Oggu

+0

@Ogugu如果它适合你,请接受答案。 – Jordon

+0

如果我必须在sql服务器数据库上实现相同的输出,是否有等价的运算符?是FIND_IN_SET()特定于任何mysql版本? – Oggu