0

我可以使用 likeCONCAT吗?我找不到任何其他说明的地方。我正在尝试以下并给出错误:

SELECT *, (select count(*) from acts where bookingType like '%CONCAT(bookingTypes_id, ',')%') as how_many FROM bookingTypes order by bookingType

注意:我使用CONCAT逗号是因为该bookingType字段基本上是一个逗号分隔的数字列表,例如 40,14,45 - 我不能只搜索例如 4,因为它会显示什么时候不应该 - 有没有更好的方法来在该字段中搜索?

4

2 回答 2

3

通常最好不要将逗号分隔的值存储在字段中,但您可以通过以下方式使用 CONCAT:

SELECT
  *,
  (SELECT COUNT(*)
   FROM   acts
   WHERE  CONCAT(',', bookingType, ',')
          LIKE CONCAT('%,', bookingTypes_id, ',%')) AS how_many
FROM bookingTypes
ORDER BY bookingType

或者您可以使用 FIND_IN_SET:

SELECT
  *,
  (SELECT COUNT(*)
   FROM   acts
   WHERE  FIND_IN_SET(bookingTypes_id, bookingType)>0) AS how_many
FROM bookingTypes
ORDER BY bookingType
于 2013-10-29T07:43:02.007 回答
2

试试这个 :-

SELECT *
FROM acts
WHERE bookingTypes LIKE CONCAT('%', 
(SELECT bookingTypes FROM bookingTypes order by bookingType LIMIT 1), '%');
于 2013-10-29T07:45:58.117 回答