【问题标题】:MySql Select 2 tables LikeMySql 选择 2 个表
【发布时间】:2012-03-19 11:04:25
【问题描述】:

我有这个查询,但显然它会循环并导致服务器崩溃。

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),',%')

表永远不会:

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    

此表具有这种结构以避免重复值

感谢您的帮助。

【问题讨论】:

  • 请发布您的预期结果

标签: mysql select sql-like concat


【解决方案1】:

这有点猜测,因为我不是 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

正如莫斯蒂指出的那样,如果您发布一个您期望的结果示例,那肯定会有所帮助。

此外,您应该将 Sensor 字段中的多个值移动到多对多表(contactos_id、sensor_id)。优化器无法对您的逗号分隔列表执行任何巧妙操作,因此对该字段的任何过滤或连接都将非常低效。

【讨论】:

  • 谢谢,我稍后再告诉你结果
  • 请按照 Mosty 的要求使用预期输出的详细信息更新您的问题。它将帮助我们为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 2013-09-04
  • 1970-01-01
  • 2014-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多