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

时间:2019-10-07 09:40:08

标签: sql

我有一个表类别,具有 id cat_name

示例:152, Plumbing

我有表 user ,具有 category_id 名称

示例:152, John Doe

当我这样做

SELECT name, category_id FROM user

结果,我会得到类似的东西

John Doe, 152

问题: 如何运行我的SQL,以获得

之类的结果
John Doe, plumbing

5 个答案:

答案 0 :(得分:1)

这很容易得到,请在下面的查询中使用同样的方法

SELECT User.Name, Category.cat_name FROM  User 
INNER JOIN Category ON Category.Id = User.category_id 

快乐编码:-)

答案 1 :(得分:0)

尝试基本的 JOINS

SELECT C.cat_name, U.Name
FROM category C JOIN User U ON C.id = U.category_id 

答案 2 :(得分:0)

这将起作用:

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

答案 3 :(得分:0)

如您所知,您有两个表,并且这些表(用户和类别)的记录之间存在一对一的关系。

所以在这里,我们将使用简单的联接来连接这两个表。

SELECT c.cat_name, u.name
FROM category as c, user as u
WHERE c.id = u.category_id

当我执行category as c时,这称为别名。这有两个好处。一种是使我们的查询简短而甜美(无需重复category,只需使用c),第二种是SQL查询引擎对我们要选择的内容具有100%的清晰度。

让我们也要选择id,那么您应该使用c.idu.category_id

答案 4 :(得分:0)

检查这些替代方法-

public static String calcExecutionTime(Instant startTime, Instant endTime) {
    if ((Duration.between(startTime, endTime).toNanos()) < 1000000) {
        return Duration.between(startTime, endTime).toNanos() + " nanoseconds.";
    } else if ((Duration.between(startTime, endTime).toMillis()) < 1000) {
        return Duration.between(startTime, endTime).toMillis() + " milliseconds.";
    } else if ((Duration.between(startTime, endTime).toSeconds()) < 100) {
        return Duration.between(startTime, endTime).toSeconds() + " seconds.";
    } else if ((Duration.between(startTime, endTime).toMinutes()) < 60) {
        return Duration.between(startTime, endTime).toMinutes() + " minutes.";
    } else {
        return Duration.between(startTime, endTime).toHours() + " hoursm.";
    }
}