相关疑难解决方法(0)

1350
推荐指数
14
解决办法
128万
查看次数

SQL Server中左连接和右连接之间的区别

我知道SQL Server中的连接.

例如.Table1,Table2有两个表.

他们的桌子结构如下.

create table Table1 (id int, Name varchar (10))

create table Table2 (id int, Name varchar (10))
Run Code Online (Sandbox Code Playgroud)

表1数据如下:

    Id     Name     
    -------------
    1      A        
    2      B    
Run Code Online (Sandbox Code Playgroud)

表2数据如下:

    Id     Name     
    -------------
    1      A        
    2      B 
    3      C
Run Code Online (Sandbox Code Playgroud)

如果我执行下面提到的两个SQL语句,则两个输出都是相同的

select *
from Table1
  left join Table2 on Table1.id = Table2.id

select *
from Table2
  right join Table1 on Table1.id = Table2.id
Run Code Online (Sandbox Code Playgroud)

请解释上述SQL语句中左右连接的区别.

sql sql-server join left-join right-join

218
推荐指数
7
解决办法
29万
查看次数

为什么SQL ANSI-92标准不比ANSI-89更好地采用?

在我所工作的每家公司,我发现人们仍然在ANSI-89标准中编写SQL查询:

select a.id, b.id, b.address_1
from person a, address b
where a.id = b.id
Run Code Online (Sandbox Code Playgroud)

而不是ANSI-92标准:

select a.id, b.id, b.address_1
from person a
inner join address b
on a.id = b.id
Run Code Online (Sandbox Code Playgroud)

对于这样一个非常简单的查询,可读性没有太大差异,但是对于大型查询,我发现将我的连接条件分组并列出表格可以更容易地查看我在连接中可能存在问题的位置,以及让我在WHERE子句中保留所有过滤功能.更不用说我觉得外连接比Oracle中的(+)语法更直观.

当我尝试向人们传播ANSI-92时,使用ANSI-92而不是ANSI-89有什么具体的性能优势吗?我会自己尝试,但是我们这里的Oracle设置不允许我们使用EXPLAIN PLAN - 不希望人们尝试优化他们的代码,是吗?

sql join ansi-92 ansi-sql

105
推荐指数
5
解决办法
4万
查看次数

PHP日期格式到月份名称和年份

我有这个日期数据:

20130814

如何获得这样的字符串输出:(在PHP中)

"2013年8月"

php date

17
推荐指数
3
解决办法
11万
查看次数

SQL效率:在子查询与JOIN之间的位置然后是GROUP

例如,我想获取应用了某些标签的所有项目的列表.我可以做以下任何一种情况:

SELECT Item.ID, Item.Name
FROM Item
WHERE Item.ID IN (
    SELECT ItemTag.ItemID
    FROM ItemTag
    WHERE ItemTag.TagID = 57 OR ItemTag.TagID = 55)
Run Code Online (Sandbox Code Playgroud)

要么

SELECT Item.ID, Item.Name
FROM Item
LEFT JOIN ItemTag ON ItemTag.ItemID = Item.ID
WHERE ItemTag.TagID = 57 OR ItemTag.TagID = 55
GROUP BY Item.ID, Item.Name
Run Code Online (Sandbox Code Playgroud)

或者完全不同的东西.

一般来说(假设有一般规则),什么是更有效的方法?

t-sql sql-server performance

16
推荐指数
1
解决办法
3万
查看次数

检索表格交集的标准SQL查询是什么?

选择联合:

select * from table1 
union 
select * from table1_backup 
Run Code Online (Sandbox Code Playgroud)

选择交叉点的查询是什么?

sql

6
推荐指数
2
解决办法
3万
查看次数

MySQL:使用JOIN和GROUP_CONCAT更新

这可能吗?

我有2个表,客户和订单.现在,我想在客户中填写该客户的所有订单ID(以逗号分隔).

我试过这样的东西,但它不起作用:

UPDATE customers AS c
LEFT JOIN orders AS o ON o.customerid=c.customerid
SET c.orders = GROUP_CONCAT(DISTINCT o.orderid)
Run Code Online (Sandbox Code Playgroud)

我得到'无效使用群组功能'.

PS.我知道总是在SELECT/JOIN中动态获取GROUP_CONCAT值会更好,但我只是想知道我是否可以用某种方式填充这个列.

mysql join group-concat mysql-error-1111

6
推荐指数
3
解决办法
8058
查看次数

如果条件在两个表的行中匹配,则创建返回id的查询

我正在学习SQL/dbms并使用Postgres.我想返回在某列中都具有特定值的行.例如,在桌CarpetsCurtains,我想要得到的id行S其中颜色'light yellow'.我想我需要JOIN,但我不确定是什么类型.

这是我得到的:

SELECT id
  FROM Carpets
  WHERE colour = 'light yellow'
        INNER JOIN Curtains ON Carpets.colour = Curtains.colour;
Run Code Online (Sandbox Code Playgroud)

两个表都具有该id属性.

关于学习JOIN,我应该先学习哪一个?如果我尝试一次性学习所有这些,我就会在脚下射击自己(因为不同的资源包括不同的"变种").

重要我正在寻找一个答案,id只有当窗帘和地毯都是"淡黄色"时才会返回.

sql postgresql

6
推荐指数
1
解决办法
1681
查看次数

PHP/MySQL:加入三个表并合并结果

可能重复:
我可以将多个MySQL行连接到一个字段中吗?

我有三张桌子:

表格1: teacher

id
firstname
surname
Run Code Online (Sandbox Code Playgroud)

表#2: course

id
name
Run Code Online (Sandbox Code Playgroud)

表3: courses_has_teachers

course_id
teacher_id
Run Code Online (Sandbox Code Playgroud)

我想得到的是教师信息的课程信息.我已经尝试过这个查询:

SELECT * FROM 
teacher, course, courses_has_teachers
WHERE
courses_has_teachers.teacher_id = teacher.id
AND
course.id = courses_has_teachers.course.id
Run Code Online (Sandbox Code Playgroud)

我得到了我想要的东西,但是:如果一门课程有一位以上的老师,我想把结果结合起来.我希望得到一个包含课程信息和教师列表的简单行,而不是具有相同课程信息的多行.

不喜欢这样:

Name      | Teacher
--------------------
Course 1  | Person 1
Course 1  | Person 2
Run Code Online (Sandbox Code Playgroud)

但是这个:

Name      | Teacher
------------------------------
Course 1  | Person 1, Person 2
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

php mysql sql join

6
推荐指数
1
解决办法
6327
查看次数

查询以获取相关表中的数据

有两个表:管理员,新闻

结构是这样的:

admin
-----
id
name

news
-----
id
createBy
updateBy
Run Code Online (Sandbox Code Playgroud)

目前createBy和updateBy存储了admin id,我想得到createBy和updateBy的管理员名称,如何实现呢?谢谢

这是我在codeigniter中使用的

$this->db->select('*');
        $this->db->from('news,admin');
        $this->db->where('id', $id);
        $this->db->where('admin.id', 'news.updateBy');
Run Code Online (Sandbox Code Playgroud)

无论如何sql查询是受欢迎的,我会将其转换为codeigniter语法.谢谢你的帮助

php mysql sql codeigniter

5
推荐指数
1
解决办法
65
查看次数