提前感谢您提供的任何帮助。今天早上我被困在这个上几个小时,我搜索的东西似乎没什么帮助。
我将与客户端关联的帐户列表存储为我的数据库中的字符串,如下所示:
| li.client_accounts |
+-----+----------------+
|ID |facility |
+-----+----------------+
|23 |1010, 1020, 1025|
+-----+----------------+
我正在尝试从另一个数据库中选择约会,其中帐号在列表中,使用如下子查询:
SELECT * FROM li_appointments.li_appointments
where app_client_id in (select facility from li_client_accounts where id = 23)
但是我的结果只显示client_id为1010的约会,而忽略其余的约会。我需要做些什么来实现这个目标?
答案 0 :(得分:5)
它不起作用,因为IN
子句需要一个字段列表。但是,在您的情况下,facility
是逗号分隔值的字符串,而不是可查询列表。这是糟糕的设计。您需要使client_accounts表成为原子,如:
| li.client_accounts |
+-----+----------------+
|client_ID |facility |
+-----+----------------+
|23 |1010|
|23 |1015|
|23 |1020|
+-----+----------------+
答案 1 :(得分:0)
你不能那样使用IN()
。
你实际得到的是这样的:
SELECT * FROM li_appointments.li_appointments
where app_client_id in ('1010, 1020, 1025')
这显然不是你想要的。
如果您想以关系方式使用它,您需要认真考虑规范化facility
列。