正确的SQL语法

时间:2014-09-25 05:51:44

标签: mysql sql

请你帮忙吗?我在这个sql语法中有错误的地方?我很抱歉我的英语我来自捷克共和国..我想随机搜索12个产品的图片。当我删除"按rand()"所以搜索产品有图片的地方是有效的,但不能正常工作。相反,当我删除"其中idObrazky不为null"所以随机搜索工作正常。但我希望,这两个都有效。感谢大家的帮助。

查询

 SELECT eshop_dalsi_obrazky.*, eshop_zbozi.* 
 from eshop_zbozi 
 left join eshop_dalsi_obrazky 
 on (eshop_zbozi.idZbozi=eshop_dalsi_obrazky.eshop_zbozi_idZbozi) 
 where idObrazky is not null 
 LIMIT 12 order by rand();

3 个答案:

答案 0 :(得分:0)

我认为您失败的原因是您limit之前有order by。请改变它:

SELECT eshop_dalsi_obrazky.*, eshop_zbozi.* 
from eshop_zbozi left join eshop_dalsi_obrazky on (eshop_zbozi.idZbozi=eshop_dalsi_obrazky.eshop_zbozi_idZbozi) 
where idObrazky is not null order by rand() LIMIT 12 

答案 1 :(得分:0)

请更改限制地点

SELECT eshop_dalsi_obrazky.*, eshop_zbozi.* from eshop_zbozi left join 
        eshop_dalsi_obrazky on (eshop_zbozi.idZbozi=eshop_dalsi_obrazky.eshop_zbozi_idZbozi)
         where idObrazky is not null LIMIT 12;

OR 你可以尝试这也可以帮助你

SELECT * FROM (SELECT eshop_dalsi_obrazky.*, eshop_zbozi.* from eshop_zbozi left join 
                eshop_dalsi_obrazky on (eshop_zbozi.idZbozi=eshop_dalsi_obrazky.eshop_zbozi_idZbozi)
                 where idObrazky is not null LIMIT 12) as tmpTbl  order by rand();

答案 2 :(得分:0)

ORDER出现在LIMIT之前。它应该是:

SELECT 
    eshop_dalsi_obrazky . *, eshop_zbozi . *
from
    eshop_zbozi
        left join
    eshop_dalsi_obrazky ON (eshop_zbozi.idZbozi = eshop_dalsi_obrazky.eshop_zbozi_idZbozi)
where
    idObrazky is not null
order by rand()
LIMIT 12;