Questions tagged «sql»

结构化查询语言(SQL)是用于查询数据库的语言。问题应包括代码示例,表结构,示例数据以及正在使用的DBMS实现的标签(例如MySQL,PostgreSQL,Oracle,MS SQL Server,IBM DB2等)。如果您的问题仅涉及特定的DBMS(使用特定的扩展名/功能),请改用该DBMS的标签。使用SQL标记的问题的答案应使用ISO / IEC标准SQL。

1
MySQL将行透视成动态列数
可以说我有三个不同的MySQL表: 表products: id | name 1 Product A 2 Product B 表partners: id | name 1 Partner A 2 Partner B 表sales: partners_id | products_id 1 2 2 5 1 5 1 3 1 4 1 5 2 2 2 4 2 3 1 1 我想得到一个表格,其中行和产品列为合作伙伴。到目前为止,我已经能够获得如下输出: name | name | …
81 mysql  sql  pivot 

11
在SQL Server查询中返回月份名称
使用SQL Server 2008,我有一个用于创建视图的查询,并且试图显示月份的名称而不是整数。 在我的数据库中,datetime位于列中OrderDateTime。查询中返回日期的行是: DATENAME(yyyy, S0.OrderDateTime) AS OrderYear, DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth 这将返回整数的年份和月份的列。我想返回月份名称(Jan, Feb, etc)。我试过了: CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth 这显然是不正确的,因为我得到 'AS'附近的语法不正确 信息。我的查询的正确语法是什么?


16
Tinyint vs Bit?
我不想在这里引发一场宗教战争,但是在如何表示数据库中的布尔值方面似乎有两种思路。有人说bit是合适的数据类型,而另一些人则认为tinyint更好。 我知道的唯一区别是: bit:存储大小为1位,可能的值为0或1 tinyint:存储大小为1个字节,可能的值为0-255 当您需要表示布尔值时,哪种数据类型更好?是tinyint值得的额外开销“以防万一”你需要值> 1?
81 sql  mysql  sql-server  types 

7
#1025-将'./database/#sql-2e0f_1254ba7'重命名为'./database/table'时出错(错误号:150)
因此,我试图向数据库中的一个表添加主键。现在,它具有这样的主键: PRIMARY KEY (user_id, round_number) 其中user_id是外键。 我正在尝试将其更改为: PRIMARY KEY (user_id, round_number, created_at) 我在phpmyadmin中通过单击表结构视图中的主键图标来执行此操作。 这是我得到的错误: #1025 - Error on rename of './database/#sql-2e0f_1254ba7' to './database/table' (errno: 150) 它是带有InnoDB表引擎的MySQL数据库。


5
如何在select子句中使用Post in子句(如SQL Server)在Post子句中进行Postgresql子查询?
我正在尝试在postgresql上编写以下查询: select name, author_id, count(1), (select count(1) from names as n2 where n2.id = n1.id and t2.author_id = t1.author_id ) from names as n1 group by name, author_id 这当然可以在Microsoft SQL Server上使用,但在postegresql上则根本不可用。我读了一点文档,似乎可以将其重写为: select name, author_id, count(1), total from names as n1, (select count(1) as total from names as n2 where n2.id …

3
完全外加入vs.完全加入
只是玩弄查询和示例以更好地理解联接。我注意到在SQL Server 2008中,以下两个查询给出的结果相同: SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name SELECT * FROM TableA FULL JOIN TableB ON TableA.name = TableB.name 它们是执行完全相同的操作以产生相同的结果,还是在更复杂的示例中遇到不同的结果?这只是可互换的术语吗?


11
SQL Server子查询返回了多个值。当子查询遵循=,!=,<,<=,>,> =时,不允许这样做
我运行以下查询: SELECT orderdetails.sku, orderdetails.mf_item_number, orderdetails.qty, orderdetails.price, supplier.supplierid, supplier.suppliername, supplier.dropshipfees, cost = (SELECT supplier_item.price FROM supplier_item, orderdetails, supplier WHERE supplier_item.sku = orderdetails.sku AND supplier_item.supplierid = supplier.supplierid) FROM orderdetails, supplier, group_master WHERE invoiceid = '339740' AND orderdetails.mfr_id = supplier.supplierid AND group_master.sku = orderdetails.sku 我收到以下错误: 消息512,级别16,状态1,第2行子查询返回的值大于1。当子查询遵循=,!=,&lt;,&lt;=,&gt;,&gt; =或将子查询用作表达式时,不允许这样做。 有任何想法吗?
81 sql  sql-server  tsql 

9
ORA-00904:无效的标识符
我尝试使用Oracle数据库编写以下内部联接查询: SELECT Employee.EMPLID as EmpID, Employee.FIRST_NAME AS Name, Team.DEPARTMENT_CODE AS TeamID, Team.Department_Name AS teamname FROM PS_TBL_EMPLOYEE_DETAILS Employee INNER JOIN PS_TBL_DEPARTMENT_DETAILS Team ON Team.DEPARTMENT_CODE = Employee.DEPTID 这给出了以下错误: INNER JOIN PS_TBL_DEPARTMENT_DETAILS Team ON Team.DEPARTMENT_CODE = Employee.DEPTID * ERROR at line 4: ORA-00904: "TEAM"."DEPARTMENT_CODE": invalid identifier 一个表的DDL为: CREATE TABLE "HRMS"."PS_TBL_DEPARTMENT_DETAILS" ( "Company Code" …

4
sqlalchemy过滤多列
如何合并两列并应用过滤器?例如,我要同时搜索“名字”和“姓氏”列。如果仅搜索一列,这就是我的操作方式: query = meta.Session.query(User).filter(User.firstname.like(searchVar))

4
如何在单个MySQL语句中添加列并使其成为外键?
在mysql中,是否可以在同一条语句中添加列和外键?加上fk的正确语法是什么? 这是我的SQL: ALTER TABLE database.table ADD COLUMN columnname INT DEFAULT(1), FOREIGN KEY (fk_name) REFERENCES reftable(refcolumn) ON DELETE CASCADE; ...以及随附的错误消息: 您的SQL语法有误。检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第4行的“ FOREIGN KEY(fk_name)参考引用reftable(refcolumn)ON DELETE CASCADE”附近使用
81 sql  mysql 

4
使用Postgres一次将数据插入3个表中
我想通过一个查询将数据插入3个表中。 我的表格如下所示: CREATE TABLE sample ( id bigserial PRIMARY KEY, lastname varchar(20), firstname varchar(20) ); CREATE TABLE sample1( user_id bigserial PRIMARY KEY, sample_id bigint REFERENCES sample, adddetails varchar(20) ); CREATE TABLE sample2( id bigserial PRIMARY KEY, user_id bigint REFERENCES sample1, value varchar(10) ); 每次插入我都会得到一个密钥作为回报,我需要将该密钥插入下表。 我的查询是: insert into sample(firstname,lastname) values('fai55','shaggk') RETURNING …

6
ORA-00972标识符的别名列名太长
我有一个查询,如: SELECT column as averyveryveryverylongalias (more than 30 characters) FROM Table_name 它返回错误ORA-00972标识符太长,是否有任何提示可以使其工作而又不缩短别名? 谢谢
81 sql  oracle  alias 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.