Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 对工会问题的两个疑问_Mysql - Fatal编程技术网

Mysql 对工会问题的两个疑问

Mysql 对工会问题的两个疑问,mysql,Mysql,我目前正在编写一个小PHP脚本,需要对其执行联合查询。 我想从一个查询中获取7个元素,从另一个查询中获取1个元素,这两个元素都在同一个表上执行。 第一个是: SELECT * FROM ( select * from quiz where id != '10' and langage = 'ar' order by nshares

我目前正在编写一个小PHP脚本,需要对其执行联合查询。 我想从一个查询中获取7个元素,从另一个查询中获取1个元素,这两个元素都在同一个表上执行。 第一个是:

SELECT * FROM (
                select * from quiz 
                where id != '10' 
                  and langage = 'ar' 
                order by nshares 
                DESC LIMIT 15) a 
order by rand() limit 7
第二个是:

select * from quiz  
where id != '10' 
  and langage = 'ar' 
order by qid DESC 
limit 1
我试过了

SELECT * FROM (
                select * from quiz 
                where id != '10' 
                  and langage = '$loga' 
                order by nshares DESC 
                LIMIT 15) a 
order by rand() 
limit 7 
union 
select * from quiz  
where id != '10' 
  and langage = '$loga' 
order by qid DESC 
limit 1

但这似乎不起作用。有人能帮忙吗?

你很接近了。您只需要在子查询周围加上括号:

(select q.*
 from (select q.*
       from quiz q
       where id <> '10' and langage = '$loga'
       order by nshares DESC
       limit 15
      ) q
 order by rand()
 limit 7
) union
(select q.*
 from quiz q
 where id <> '10' and langage = '$loga'
 order by qid desc
 limit 1
);
是一个显示语法工作的SQL小提琴

注:

联合会产生删除重复项的开销。如果您不希望出现这种开销,那么应该使用union all。 假设有足够的匹配数据,您的查询可能返回7或8行,因为第二个查询中的随机行可能与第一个查询匹配。 语法错误是因为只有在union/union all查询结束时才允许order by,除非使用子查询。 如果id是一个数字,则不要使用单引号进行比较。它会让人困惑,也会让优化器困惑。
需要一个表达式。在19号位置附近。在位置19附近,这种类型的子句以前被解析过。在位置20的select附近,以前分析过这种类型的子句。在位置158处的order by附近无法识别语句类型。在位置附近订购158@TestilaSupport . . . 它确实有效。我只是添加了一个指向SQL FIDLE的链接,我甚至不需要更改查询中的任何内容。第二个查询似乎总是最后一个结果。您可以对它们进行随机排序,以便第二个查询与其他7个结果也处于随机位置吗?修复了所有问题:非常感谢您的帮助!