我有此查询,但显然它可以循环并使服务器崩溃。
SELECT neveras.Panel, contactos.Email FROM neveras, contactos
WHERE neveras.Alarma = 1 And Estado <> 1
And contactos.Sensor
LIKE CONCAT('%,',(Select Usuario FROM neveras where Alarma = 1),',%')
表everas:
Id|Panel|Usuario|Alarma|Estado
1 uno 1 1 2
2 dos 1 2 1
3 tres 2 2 1
4 cuatro 2 2 1
5 cinco 3 2 1
表联系人:
Id |Email |Nombre |Sensor
1 uno@uno nombre1 1,3,5
2 dos@dos nombre2 2,4
该表具有这种结构,以避免重复值
我感谢您的帮助。
最佳答案
这有点猜测,因为我不是100%知道您要实现的目标,但是请尝试一下-
SELECT neveras.Panel, contactos.Email
FROM neveras
INNER JOIN contactos
ON FIND_IN_SET(neveras.Usuario, contactos.Sensor)
WHERE neveras.Alarma = 1
AND neveras.Estado <> 1
正如Mosty指出的那样,如果您发布一个示例,说明预期结果肯定会有所帮助。
此外,您应该将“传感器”字段中的多个值移动到多对多表(contactos_id,sensor_id)。优化器无法对逗号分隔的列表做任何聪明的事情,因此对该字段进行任何过滤或联接将非常低效。
关于mysql - MySql选择2个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9507972/