与WHERE in子句的Mysql问题

时间:2014-03-12 11:46:16

标签: mysql sql

我和我的"在"在mysql中的子句,我无法弄清楚什么是错误的。 所以我有两张桌子......

1)座位

(int)seat_id

2)注册

(int)register_id

(varchar)seat_ids - 以逗号分隔的席位,例如102,103,104


因此,我获取匹配结果的查询是

SELECT * FROM Seats s, Registers r 
WHERE s.seat_id IN (r.seat_ids) 
GROUP BY s.seat_id

有人能弄明白什么是错的吗?谢谢,

2 个答案:

答案 0 :(得分:1)

IN要求列表是文字列表,而不是逗号分隔的字符串。请使用FIND_IN_SET

WHERE FIND_IN_SET(s.seat_id, r.seat_ids)

答案 1 :(得分:0)

首先将seat_ids更改为int,否则维护一个单独的表,其中保持座位和寄存器的链接。

像下面的加入可以帮助2桌的俱乐部成绩

SELECT * FROM Seats s
JOIN Registers r ON s.seat_id = r.seat_ids

但这需要相同数据类型的Seats seat_id&注册seat_ids

@Barmar所说的可以使用