[英]error in SQL syntax, invalid syntax
我有以下查询:
SELECT s0_.id, s0_.caption, s0_.lowresimageurl, s0_.medresimageurl, s0_.highresimageurl, s0_.price
FROM app_instagram_shop_picture s0_
LEFT JOIN app_instagram_shop s1_ force index (idx_locked_deletedAt)
LEFT JOIN app_instagram_picture_category s2_
LEFT JOIN app_instagram_first_level_category s3_
ON s0_.shop_id = s1_.id
AND s1_.deletedAt IS NULL
AND s0_.id = s2_.picture_id
AND s2_.first_level_category_id = s3_.id
WHERE (s0_.isShown = 1
AND s1_.id != 32179
AND s1_.expirydate IS NULL
AND s1_.deletedAt IS NULL
AND s1_.isLocked = 0
AND s1_.owner_id IS NULL
AND s0_.id != 2598561
AND s0_.deletedAt IS NULL
AND s0_.isStyleInspiration = 0
AND s0_.isLocked = 0
AND s3_.id = 11
)
AND (s0_.deletedAt IS NULL)
ORDER BY s0_.updated DESC
LIMIT 16
由于某种原因,这导致我以下错误:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE (s0_.isShown = 1
AND s1_.id != 32179
AND s1_.expirydate IS N' at line 10
但是,我似乎无法弄清楚问题出在哪里。
请记住,每个SELECT语句仅具有一个WHERE子句,并在检查的一开始就使用它,此后仅使用AND(我被很多次的我遗忘了,因为忘记了这一点,并在后面的链中放置了额外的WHERE子句)
SELECT s0_.id, s0_.caption, s0_.lowresimageurl, s0_.medresimageurl, s0_.highresimageurl, s0_.price
FROM app_instagram_shop_picture s0_
LEFT JOIN app_instagram_shop s1_ force index (idx_locked_deletedAt)
LEFT JOIN app_instagram_picture_category s2_
LEFT JOIN app_instagram_first_level_category s3_
ON s0_.shop_id = s1_.id
AND s1_.deletedAt IS NULL
AND s0_.id = s2_.picture_id
AND s2_.first_level_category_id = s3_.id
WHERE s0_.isShown = 1
AND s1_.id != 32179
AND s1_.expirydate IS NULL
AND s1_.deletedAt IS NULL
AND s1_.isLocked = 0
AND s1_.owner_id IS NULL
AND s0_.id != 2598561
AND s0_.deletedAt IS NULL
AND s0_.isStyleInspiration = 0
AND s0_.isLocked = 0
AND s3_.id = 11
AND s0_.deletedAt IS NULL
ORDER BY s0_.updated DESC
LIMIT 16
使用JOIN ,您需要为每个联接表指定ON
或USING
,以指示联接关系。
您有3个LEFT JOINs
但只有一个ON
条件。 您可能打算这样做:
FROM app_instagram_shop_picture s0_
LEFT JOIN app_instagram_shop s1_ force index (idx_locked_deletedAt)
ON s0_.shop_id = s1_.id
AND s1_.deletedAt IS NULL
LEFT JOIN app_instagram_picture_category s2_
ON s0_.id = s2_.picture_id
LEFT JOIN app_instagram_first_level_category s3_
ON s2_.first_level_category_id = s3_.id
(在第一个ON s0_.shop_id = s1_.id
指定其他谓词不适用于其他ON s0_.shop_id = s1_.id
表)
支架我的原因错误,请卸下支架并使用
SELECT s0_.id, s0_.caption, s0_.lowresimageurl, s0_.medresimageurl, s0_.highresimageurl, s0_.price
FROM app_instagram_shop_picture s0_
LEFT JOIN app_instagram_shop s1_ force index (idx_locked_deletedAt)
LEFT JOIN app_instagram_picture_category s2_
LEFT JOIN app_instagram_first_level_category s3_
ON s0_.shop_id = s1_.id
AND s1_.deletedAt IS NULL
AND s0_.id = s2_.picture_id
AND s2_.first_level_category_id = s3_.id
WHERE s0_.isShown = 1
AND s1_.id != 32179
AND s1_.expirydate IS NULL
AND s1_.deletedAt IS NULL
AND s1_.isLocked = 0
AND s1_.owner_id IS NULL
AND s0_.id != 2598561
AND s0_.deletedAt IS NULL
AND s0_.isStyleInspiration = 0
AND s0_.isLocked = 0
AND s3_.id = 11
AND (s0_.deletedAt IS NULL)
ORDER BY s0_.updated DESC
LIMIT 16
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.