如何运行SQL以获得“John Doe,Pimping”之类的结果

如何运行SQL以获得“John Doe,Pimping”之类的结果,sql,Sql,我有表格类别,带有id和cat_名称 示例:152,管道 我有一个表user,带有category\u id和name 例:152,无名氏 当我这样做的时候 从用户中选择名称、类别\u id 因此,我会有类似的东西 John Doe, 152 问题: 如何运行SQL以获得以下结果: John Doe, plumbing 试试基本的 这是很容易得到这个,请使用下面的查询相同 SELECT User.Name, Category.cat_name FROM User INNER JOIN C

我有表格类别,带有id和cat_名称

示例:152,管道

我有一个表user,带有category\u id和name

例:152,无名氏

当我这样做的时候

从用户中选择名称、类别\u id

因此,我会有类似的东西

John Doe, 152
问题: 如何运行SQL以获得以下结果:

John Doe, plumbing
试试基本的


这是很容易得到这个,请使用下面的查询相同

SELECT User.Name, Category.cat_name FROM  User 
INNER JOIN Category ON Category.Id = User.category_id 
快乐编码:-

这将起作用:

select a.name,b.cat_name from user a, category b 
where a.category_id=b.id 

正如您所了解的,您有两个表,并且这些表的记录之间存在一些1对1的关系User&category

所以这里我们将使用一个简单的连接来连接这两个表

SELECT c.cat_name, u.name
FROM category as c, user as u
WHERE c.id = u.category_id
当我使用c分类时,这称为别名。这有两个好处。一是保持我们的查询简短,不需要重复分类,只需使用c;二是SQL查询引擎对我们要选择的内容有100%的清晰性


如果您还想选择id,那么您应该使用c.id或u.category\u id。

检查这些替代方法-

IF OBJECT_ID('Category') IS NOT NULL
    DROP TABLE Category
IF OBJECT_ID('User') IS NOT NULL
    DROP TABLE [User]

CREATE TABLE Category
(ID INT,Cat_name VARCHAR(20))

CREATE TABLE [User]
(Category_id INT,[Name] VARCHAR(20))

INSERT INTO Category(ID ,Cat_name)
VALUES (152,'Plumbing')

INSERT INTO [User](Category_id ,[Name])
VALUES (152,'John Doe')

--Method 1 (using CROSS APPLY)
SELECT U.[Name], C.Cat_name FROM [User] U CROSS APPLY Category C WHERE U.Category_id=C.ID
--Method 2 (using INNER JOIN)
SELECT U.[Name], C.Cat_name FROM [User] U INNER JOIN Category C ON U.Category_id=C.ID
--Method 3 (using WHERE and WITHOUT JOIN)
SELECT U.[Name], C.Cat_name FROM [User] U,Category C WHERE U.Category_id=C.ID

今天的提示:始终使用现代的显式连接语法。更容易编写而不出错,更容易阅读和维护,如果需要,更容易转换为外部联接!今天的提示:始终使用现代的显式连接语法。更容易编写而不出错,更容易阅读和维护,如果需要,更容易转换为外部联接!工作,如预期,谢谢。但是,如何显示sql中的每一行?目前我的代码每行,垃圾邮件与所有记录从SQL
IF OBJECT_ID('Category') IS NOT NULL
    DROP TABLE Category
IF OBJECT_ID('User') IS NOT NULL
    DROP TABLE [User]

CREATE TABLE Category
(ID INT,Cat_name VARCHAR(20))

CREATE TABLE [User]
(Category_id INT,[Name] VARCHAR(20))

INSERT INTO Category(ID ,Cat_name)
VALUES (152,'Plumbing')

INSERT INTO [User](Category_id ,[Name])
VALUES (152,'John Doe')

--Method 1 (using CROSS APPLY)
SELECT U.[Name], C.Cat_name FROM [User] U CROSS APPLY Category C WHERE U.Category_id=C.ID
--Method 2 (using INNER JOIN)
SELECT U.[Name], C.Cat_name FROM [User] U INNER JOIN Category C ON U.Category_id=C.ID
--Method 3 (using WHERE and WITHOUT JOIN)
SELECT U.[Name], C.Cat_name FROM [User] U,Category C WHERE U.Category_id=C.ID