SELECT (SELECT GROUP_CONCAT(companyName)
FROM company WHERE id IN (27,38)) AS companyName, t.*
FROM Test t
我需要输出LIKE这个 它返回两个公司名称(例如:Apple,索尼)
但它执行似乎
SELECT (SELECT GROUP_CONCAT(companyName)
FROM company WHERE id IN ("27,38")) AS companyName, t.*
FROM Test t
所以它返回第一家公司NAME(例如:Apple)第27家公司NAME。
任何人都有帮助解决它。
下面的示例表结构
测试表
---------
Company
---------
27,38 > TEXT FIELD
公司表
--------------------
ID companyName
-------------------
1 Apple
2 Sony
. .
. .
答案 0 :(得分:1)
您将27和28作为单个字符串传递,因此MySQL考虑第一个数字为27,这就是它返回苹果的原因。如果要返回Apple和Sony,则必须拆分字符串。
答案 1 :(得分:0)
您需要使用
SELECT group_concat(companyName separator ',')
FROM company WHERE id IN ("27,38");
答案 2 :(得分:0)
我看到您的评论看起来您将公司ID作为逗号分隔字符串存储在预告片中,而不是normalization,而是您可以添加新的联结表,其中包含公司和预告片的参考
trailer
=======
id name
1 some name
company
id name
-------------------
1 Apple
2 Sony
trailer_companies (junction table)
trailer_id company_id
---------------------
1 27
1 38
现在,您可以使用联接
查询记录select t.*,group_concat(c.name) companyName
from trailer t
join trailer_companies tc on (t.id = tc.trailer_id)
join company c on (tc.company_id = c.id)
group by t.id
如果您想继续使用当前的设计,这是不可取的,因为它很难优化,不适合缩放的应用程序
<击> 撞击>
<击>SELECT
(SELECT
GROUP_CONCAT(companyName SEPARATOR ',')
FROM company
WHERE FIND_IN_SET(id,t.companyIds) > 0
) AS companyName, t.*
FROM Trailers t
击> <击> 撞击>