2014-03-12 56 views
1

中的WHQL存在Mysql问题我在使用mysql中的“where in”子句时遇到问题,我无法弄清楚什么是错误的。 所以我有两个表...在条款

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 

有人可以找出什么是错?谢谢,

回答

1

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

WHERE FIND_IN_SET(s.seat_id, r.seat_ids) 
+0

哇,这确实有效:O从来没有听说过find_in_set!去永远保存它!呵呵:)非常感谢 –

+0

它正好在字符串函数的文档页面上。 http://dev.mysql.com/doc/refman/5.1/en/string-functions.html – Barmar

0

首先改变seat_ids为int,否则保持在那里的座位和寄存器联动保持一个单独的表。

加入像下面可以帮助2个表

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

的俱乐部成绩但这将需要座位的相同的数据类型SEAT_ID &寄存器seat_ids

还有什么@Barmar说可以用