我正在学习SQL。一个任务是编写表达式
SELECT MIN(Price), ProductName
FROM Products;
编辑器https://www.w3schools.com/sql/trysql.asp?filename=trysql_op_in并拍摄结果图像。
我的老师说这对他来说很好。当我这样做时,SQL返回
您试图执行不包含指定表达式'ProductName'作为聚合函数一部分的查询
我找到的答案包括更改程序的设置(无法执行)或执行尚未了解的操作。为什么该表达方式给我和我的老师带来不同的事情,我该怎么做才能改变呢?
答案 0 :(得分:1)
避免将普通列与用于派生列的聚合函数混合。为了进行测试,您可以使用:
SELECT MIN(Price) AS PRICE
FROM Products;
答案 1 :(得分:1)
因为您不能在未指定要如何分组的情况下为“产品名称”列分组许多不同的值。
您是否想获得SUM(ProductName)
或LIST(ProductName
或AVG(ProductName)
或其他东西?
您想要 与该ProductName
做什么,您打算如何使用该列?
您可以将多个值fold (using term from functional programming)合并为一个
SELECT MIN(Price), MAX(ProductName) FROM Products
或者您应该将其指定为锚,将一组与其他组分开。
SELECT MIN(Price), ProductName
FROM Products
GROUP BY ProductName
进行汇总时-查询的每一列都必须
另一个问题是使用ProductName
作为关键字段。
由于许多原因(至少三个),这通常是个坏主意。通常,您需要一个整数数字ID和一个单独的表,其中包含产品的每个synthetic ID的名称和其他属性。
另请参阅:
答案 2 :(得分:1)
您的查询将在MySQL(旧版本)或SQLite中运行。但是,您不需要聚合查询。在这种情况下,Element.SendKeys("string" + Keys.Enter)
和const columns = useMemo(() => [
{
name: 'Project Name',
selector: 'name',
sortable: true,
},
{
//Actions for every project
cell: (row) => (
<ButtonGroup>
{/* Button for deleting a specific project*/}
<Button size='sm' onClick={deletetoggle}>
Delete
</Button>
<Modal isOpen={deleteModal} toggle={deletetoggle}>
<ModalHeader toggle={deletetoggle}>Delete Project</ModalHeader>
<ModalBody>Are you sure to delete project {row.id}?</ModalBody>
<ModalFooter>
<Button size='sm' onClick={() => deleteProjectMethod(row.id)}>
Delete
</Button>
<Button size='sm' onClick={deletetoggle}>
Cancel
</Button>
</ModalFooter>
</Modal>
</ButtonGroup>
),
},
]);
做您想要做的事情:
ORDER BY
您的老师应该知道这一点,并且不应教授语法错误的内容。它不是SQL标准,因此不适用于大多数数据库。
因为LIMIT
和SELECT p.Price, p.ProductName
FROM Products p
ORDER BY p.Price
LIMIT 1;
子句不兼容,所以语法不正确-GROUP BY
中有未聚合的列(我认为其他答案可以解释这一点)。
答案 3 :(得分:0)
很明显,您和您的老师具有不同的设置或数据库程序的不同版本。如果是我的sql。 MySQL提供了一个设置 ONLY_FULL_GROUP_BY 您可以在以下位置阅读更多内容 https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html关于如何根据您的需要进行设置。如果您无法更改设置,则可能无法解决。