2

提前感谢你们可以提供的任何帮助。今天早上我已经被困在这个上面几个小时了,我搜索的任何东西似乎都没有帮助。

我将与客户关联的帐户列表作为字符串存储在我的数据库中,如下所示:

   | 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 的约会,而忽略了其余的。我需要做什么才能使它正常工作?

4

2 回答 2

5

它不起作用,因为该IN子句需要一个字段列表。但是,在您的情况下,facility是逗号分隔值的字符串,而不是可查询的列表。这是一个糟糕的设计。您需要使您的 client_accounts 表原子化,例如:

   | li.client_accounts   |
   +-----+----------------+
   |client_ID   |facility |
   +-----+----------------+
   |23   |1010|
   |23   |1015|
   |23   |1020|
   +-----+----------------+
于 2013-07-05T16:12:20.553 回答
0

你不能这样用IN()

你实际得到的是这样的:

SELECT * FROM li_appointments.li_appointments
    where app_client_id in ('1010, 1020, 1025')

这显然不是你想要的。

facility如果您想以关系方式使用它,您需要认真考虑规范化您的列。

于 2013-07-05T16:21:10.347 回答