Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 e、 对于底部查询,我认为对于顶部查询,它将改变结果。@Johan:因为st2.相关字段不是NULL(它已经包含在ON子句中),它不会改变结果。@ypercube,所以您可以将count(afield)更改为count(*)如果您确定afield永远不会为_Mysql_Subquery_Where In - Fatal编程技术网

Mysql e、 对于底部查询,我认为对于顶部查询,它将改变结果。@Johan:因为st2.相关字段不是NULL(它已经包含在ON子句中),它不会改变结果。@ypercube,所以您可以将count(afield)更改为count(*)如果您确定afield永远不会为

Mysql e、 对于底部查询,我认为对于顶部查询,它将改变结果。@Johan:因为st2.相关字段不是NULL(它已经包含在ON子句中),它不会改变结果。@ypercube,所以您可以将count(afield)更改为count(*)如果您确定afield永远不会为,mysql,subquery,where-in,Mysql,Subquery,Where In,e、 对于底部查询,我认为对于顶部查询,它将改变结果。@Johan:因为st2.相关字段不是NULL(它已经包含在ON子句中),它不会改变结果。@ypercube,所以您可以将count(afield)更改为count(*)如果您确定afield永远不会为null,明白了。Thanks@quano是,它列出了所有重复项,因为分组依据位于st1.id上,而不是位于st1.relevant_字段。是的,这可能会创建一个包含分组结果的临时表,因此速度与查看版本相同。但是查询计划应该说实话,这对我来说非


e、 对于底部查询,我认为对于顶部查询,它将改变结果。@Johan:因为
st2.相关字段
不是
NULL
(它已经包含在
ON
子句中),它不会改变结果。@ypercube,所以您可以将count(afield)更改为count(*)如果您确定
afield
永远不会为
null
,明白了。Thanks@quano是,它列出了所有重复项,因为
分组依据
位于
st1.id
上,而不是位于
st1.relevant_字段
。是的,这可能会创建一个包含分组结果的临时表,因此速度与查看版本相同。但是查询计划应该说实话,这对我来说非常有效。我在一个IN(子查询)中有另一个IN(子查询),它花费了超过10分钟的时间,以至于我在等待的时候用谷歌搜索。按照您的建议,在SELECT*FROM()中包装每个子查询将其缩短为2秒!谢谢你,我一直在想一个好办法来做这几小时了。这很有效。但愿我能给你更多的选票!这绝对应该是答案。效果非常好。一个耗时约50秒的查询现在是即时的。但愿我能投更多的票。有时候你不能使用连接,所以这是正确的答案。我想知道为什么优化器会考虑与联合相关的查询。。。不管怎样,这个技巧就像魔法一样有效。你能解释一下是什么使它成为一个相关子查询吗?我的理解是,当子查询使用一个依赖于外部查询的值时,它就会变得相关。但在这个例子中,我看不到任何相互依赖性。它将为外部查询返回的每一行提供相同的结果。我在MariaDB上实现了一个类似的示例,我看不出性能有什么影响(到目前为止),所以我想清楚地看到,什么时候需要这个
SELECT*
wrapping。
SELECT relevant_field
FROM some_table
GROUP BY relevant_field
HAVING COUNT(*) > 1
SELECT *
FROM some_table 
WHERE relevant_field IN
(
    SELECT relevant_field
    FROM some_table
    GROUP BY relevant_field
    HAVING COUNT(*) > 1
)
SELECT *
FROM some_table
WHERE relevant_field IN
(
    SELECT relevant_field
    FROM temp_view
)
SELECT *
FROM some_table
WHERE
 relevant_field in
 (
  SELECT relevant_field
  FROM some_table
  GROUP BY relevant_field
  HAVING COUNT ( * ) > 1
 );
SELECT *
FROM some_table as t1
WHERE
 t1.relevant_field in
 (
  SELECT t2.relevant_field
  FROM some_table as t2
  GROUP BY t2.relevant_field
  HAVING COUNT ( t2.relevant_field ) > 1
 );
SELECT st1.*
FROM some_table st1
inner join 
(
    SELECT relevant_field
    FROM some_table
    GROUP BY relevant_field
    HAVING COUNT(*) > 1
)st2 on st2.relevant_field = st1.relevant_field;
SELECT st1.*, st2.relevant_field FROM sometable st1
INNER JOIN sometable st2 ON (st1.relevant_field = st2.relevant_field)
GROUP BY st1.id  /* list a unique sometable field here*/
HAVING COUNT(*) > 1
SELECT * FROM sometable a WHERE EXISTS (
  SELECT 1 FROM sometable b
  WHERE a.relevant_field = b.relevant_field
  GROUP BY b.relevant_field
  HAVING count(*) > 1) 
SELECT * FROM
(
    SELECT relevant_field
    FROM some_table
    GROUP BY relevant_field
    HAVING COUNT(*) > 1
) AS subquery
SELECT *
FROM some_table
WHERE relevant_field IN
(
    SELECT * FROM
    (
        SELECT relevant_field
        FROM some_table
        GROUP BY relevant_field
        HAVING COUNT(*) > 1
    ) AS subquery
)
SELECT t1.*
FROM 
 some_table t1,
  (SELECT relevant_field
  FROM some_table
  GROUP BY relevant_field
  HAVING COUNT (*) > 1) t2
WHERE
 t1.relevant_field = t2.relevant_field;
SELECT STRAIGHT_JOIN table.field FROM table WHERE table.id IN (...)
`select DATE_FORMAT(L.TANGGAL_INPUT,'%d-%m-%y') AS TANGGAL,
      L.TRANSACTION_NUMBER AS VOUCHER,
      L.ACCOUNT_CODE,
      C.DESCRIPTION,
      L.DEBET,
      L.KREDIT 
 from (select * from tabel_buku_besar A
                where A.COMPANYAREA='$COMPANYAREA'
                      AND A.CURRENCY='$Currency'
                      AND A.ACCOUNT_CODE!='$ACCOUNT'
                      AND (A.TANGGAL_INPUT BETWEEN STR_TO_DATE('$StartDate','%d/%m/%Y') AND STR_TO_DATE('$EndDate','%d/%m/%Y'))) L 
INNER JOIN (select * from tabel_buku_besar A
                     where A.COMPANYAREA='$COMPANYAREA'
                           AND A.CURRENCY='$Currency'
                           AND A.ACCOUNT_CODE='$ACCOUNT'
                           AND (A.TANGGAL_INPUT BETWEEN STR_TO_DATE('$StartDate','%d/%m/%Y') AND STR_TO_DATE('$EndDate','%d/%m/%Y'))) R ON R.TRANSACTION_NUMBER=L.TRANSACTION_NUMBER AND R.COMPANYAREA=L.COMPANYAREA 
LEFT OUTER JOIN master_account C ON C.ACCOUNT_CODE=L.ACCOUNT_CODE AND C.COMPANYAREA=L.COMPANYAREA 
ORDER BY L.TANGGAL_INPUT,L.TRANSACTION_NUMBER`
SELECT * FROM primary_table st1
LEFT JOIN comparision_table st2 ON (st1.relevant_field = st2.relevant_field)
WHERE st2.primaryKey IS NOT NULL