Mysql 有没有办法从嵌套查询返回计算值?
好吧,我花了一个星期的时间想弄明白这一点,但我似乎找不到我要找的东西。我认为,在看到伪代码后,有两个类似的问题更容易解释。这是第一个Mysql 有没有办法从嵌套查询返回计算值?,mysql,nested-queries,Mysql,Nested Queries,好吧,我花了一个星期的时间想弄明白这一点,但我似乎找不到我要找的东西。我认为,在看到伪代码后,有两个类似的问题更容易解释。这是第一个 SELECT P_CODE, P_DESCRIPT, @diff FROM PRODUCT WHERE @diff := (SELECT ROUND(ABS(P_PRICE -(SUM(P_PRICE)/COUNT(P_PRICE))),2) FROM PRODUCT WHERE P_PRICE in (SELECT P_P
SELECT P_CODE, P_DESCRIPT, @diff
FROM PRODUCT
WHERE @diff :=
(SELECT ROUND(ABS(P_PRICE -(SUM(P_PRICE)/COUNT(P_PRICE))),2)
FROM PRODUCT
WHERE P_PRICE in
(SELECT P_PRICE
FROM PRODUCT));
基本上,我有一个product表,我试图在其中返回主键、描述以及所有条目的产品价格和平均价格之间的差异。在类似的注释中,这里是第二个问题
SELECT *, @val
FROM LINE
WHERE P_CODE in
(SELECT P_CODE
FROM LINE
HAVING COUNT(P_CODE) >
(@val = (SELECT COUNT(*) FROM LINE)/(SELECT COUNT(DISTINCT P_CODE)
FROM LINE)));
在这里,我试图返回行表中的所有字段,该行表基本上是一个收据表,该条目的产品售出的商品数量超过平均售出数量
清楚我想用这些做什么吗?我试图返回其他值以及计算值,如果不清楚,我只能使用列表形式的另一个表中的值来计算。我不太确定,但也许JOIN语句在这里可以工作?我是mysql新手,还不太了解如何最好地使用JOIN语句。如果有人能告诉我如何处理这些问题,或者至少给我指出一个链接,该链接描述了如何处理这些问题,因为我没有找到一个链接,它与一个返回平均价格的子查询连接:
SELECT p.p_code, p.p_descript, ROUND(ABS(p.p_price - x.avg_price)) AS price_diff
FROM product AS p
CROSS JOIN (
SELECT AVG(p_price) AS avg_price
FROM product
) AS x
请注意,有一个内置的AVG函数,您不需要使用SUM和COUNT。此外,从产品中选择p_价格中的p_价格在哪里也没有意义——该测试显然总是正确的
SELECT l.*
FROM line AS l
JOIN (
SELECT p_code, COUNT(*) AS code_count
FROM line
GROUP BY p_code
) AS l1 ON l.p_code = l1.p_code
JOIN (
SELECT COUNT(*)/COUNT(DISTINCT p_code) AS avg_count
FROM line
) AS x ON l1.code_count > x.avg_count
与返回平均价格的子查询联接:
SELECT p.p_code, p.p_descript, ROUND(ABS(p.p_price - x.avg_price)) AS price_diff
FROM product AS p
CROSS JOIN (
SELECT AVG(p_price) AS avg_price
FROM product
) AS x
请注意,有一个内置的AVG函数,您不需要使用SUM和COUNT。此外,从产品中选择p_价格中的p_价格在哪里也没有意义——该测试显然总是正确的
SELECT l.*
FROM line AS l
JOIN (
SELECT p_code, COUNT(*) AS code_count
FROM line
GROUP BY p_code
) AS l1 ON l.p_code = l1.p_code
JOIN (
SELECT COUNT(*)/COUNT(DISTINCT p_code) AS avg_count
FROM line
) AS x ON l1.code_count > x.avg_count
基本上,我有一个产品表,我试图返回主键、描述以及产品价格和所有条目的平均价格之间的差异
使用MySQL的用户变量会使查询更加困难
有很多方法可以满足你的需求
方法一
使用内部select或子查询
SELECT
PRODUCT.P_CODE
, PRODUCT.P_DESCRIPT
, ROUND(ABS((PRODUCT.P_PRICE) - (SELECT AVG(PRODUCT_INNER.P_PRICE) FROM PRODUCT AS PRODUCT_INNER)), 2) AS diff
FROM
PRODUCT
方法二
使用交叉连接
质疑
基本上,我有一个产品表,我试图返回主键、描述以及产品价格和所有条目的平均价格之间的差异
使用MySQL的用户变量会使查询更加困难
有很多方法可以满足你的需求
方法一
使用内部select或子查询
SELECT
PRODUCT.P_CODE
, PRODUCT.P_DESCRIPT
, ROUND(ABS((PRODUCT.P_PRICE) - (SELECT AVG(PRODUCT_INNER.P_PRICE) FROM PRODUCT AS PRODUCT_INNER)), 2) AS diff
FROM
PRODUCT
方法二
使用交叉连接
质疑
谢谢。因为我认为我需要使用连接,尽管我们从未使用过交叉连接。我知道有一个AVG函数,我可能一直这样,因为我实际上先写了第二个函数,需要在那里使用不同的P_代码,然后复制和粘贴了很多hanks。因为我认为我需要使用连接,尽管我们从未使用过交叉连接。我知道有一个AVG函数,我可能一直这样做,因为我实际上先写了第二个函数,需要不同的P_代码,然后复制粘贴