标签: join

MySQL - 从多个表中选择具有相同结构但不同数据的数据

好的,这是我的困境,我有一个数据库设置,大约5个表都具有完全相同的数据结构.以这种方式分离数据以用于本地化目的并且总共分割大约450万条记录.

大多数时候只需要一张桌子,一切都很好.但是,有时需要从2个或更多表中获取数据,并且需要按用户定义的列进行排序.这是我遇到问题的地方.

数据列:

id, band_name, song_name, album_name, genre
Run Code Online (Sandbox Code Playgroud)

MySQL声明:

SELECT * from us_music, de_music where `genre` = 'punk'
Run Code Online (Sandbox Code Playgroud)

MySQL吐出这个错误:

#1052 - Column 'genre' in where clause is ambiguous
Run Code Online (Sandbox Code Playgroud)

显然,我做错了.有人愿意为我阐明这一点吗?

mysql sql join mysql-error-1052

78
推荐指数
3
解决办法
18万
查看次数

在dplyr中加入时,如何为x和y指定列的名称?

我有两个数据帧,我想使用dplyr加入.一个是包含名字的数据框.

test_data <- data.frame(first_name = c("john", "bill", "madison", "abby", "zzz"),
                        stringsAsFactors = FALSE)
Run Code Online (Sandbox Code Playgroud)

另一个数据框包含Kantrowitz名称语料库的清理版本,用于识别性别.这是一个最小的例子:

kantrowitz <- structure(list(name = c("john", "bill", "madison", "abby", "thomas"), gender = c("M", "either", "M", "either", "M")), .Names = c("name", "gender"), row.names = c(NA, 5L), class = c("tbl_df", "tbl", "data.frame"))
Run Code Online (Sandbox Code Playgroud)

我基本上想要test_data使用kantrowitz表格从表中查找名称的性别.因为我要将它抽象为一个函数encode_gender,所以我不知道将要使用的数据集中列的名称,因此我不能保证它将会被name用作,例如kantrowitz$name.

在基础RI中将以这种方式执行合并:

merge(test_data, kantrowitz, by.x = "first_names", by.y = "name", all.x = TRUE)
Run Code Online (Sandbox Code Playgroud)

返回正确的输出:

  first_name gender
1       abby either
2       bill either
3       john      M
4    madison …
Run Code Online (Sandbox Code Playgroud)

join r left-join dplyr

74
推荐指数
2
解决办法
9万
查看次数

完全外部加入与完全加入

只需使用查询和示例来更好地了解联接.我注意到在SQL Server 2008中,以下两个查询给出了相同的结果:

SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
Run Code Online (Sandbox Code Playgroud)
SELECT * FROM TableA
FULL JOIN TableB
ON TableA.name = TableB.name
Run Code Online (Sandbox Code Playgroud)

这些是完全相同的动作产生相同的结果,还是会在更复杂的例子中遇到不同的结果?这只是可互换的术语吗?

sql t-sql join sql-server-2008

72
推荐指数
3
解决办法
15万
查看次数

Oracle的加号(+)表示法和ansi JOIN符号之间的区别?

使用oracle的加号(+)和ansi标准join符号之间的区别是什么?

性能有差异吗?

加号表示法是否已弃用?

sql oracle performance join

71
推荐指数
5
解决办法
9万
查看次数

Rails ActiveRecord:与LEFT JOIN而不是INNER JOIN连接

我有这个代码

User.find(:all, :limit => 10, :joins => :user_points,
                :select => "users.*, count(user_points.id)", :group =>
                "user_points.user_id")
Run Code Online (Sandbox Code Playgroud)

它生成以下sql

SELECT users.*, count(user_points.id) 
FROM `users` 
INNER JOIN `user_points` 
ON user_points.user_id = users.id 
GROUP BY user_points.user_id 
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

是否可以以其他方式进行LEFT JOIN而不是INNER JOIN,User.find_by_sql并且可以手动输入查询?

activerecord join ruby-on-rails inner-join left-join

71
推荐指数
3
解决办法
7万
查看次数

如何排除不与另一个表连接的行?

我有两个表,一个有主键,另一个有外键.

我想从主表中提取数据,只有当辅助表没有包含它的密钥的条目时.与简单内部联接相反的排序,仅返回通过该键连接在一起的行.

sql join

70
推荐指数
3
解决办法
9万
查看次数

SQL多连接语句

当我在我的SQL语句中只有一个内连接时,它完美地工作.我尝试加入第二个表,现在我收到一个错误,指出存在语法错误(缺少运算符).这有什么不对?

adsFormView.SelectCommand = "SELECT * FROM [tableCourse] INNER JOIN [tableGrade] ON [tableCourse].[grading] = [tableGrade].[id] INNER JOIN [tableCourseType] ON [tableCourse].[course_type] = [tableCourseType].[id] WHERE [prefix]='" & myPrefix & "' AND [course_number]='" & myCourseNum & "'"
Run Code Online (Sandbox Code Playgroud)

sql ms-access select join syntax-error

70
推荐指数
2
解决办法
7万
查看次数

MySQL加入不存在的地方

我有一个连接两个表的MySQL查询

  • 选民
  • 他们加入选民的家庭.household_id和household.id

    现在我需要做的是修改它,其中选民表连接到第三个名为elimination的表,沿voter.id和elimination.voter_id,但是我想要排除选民表中的任何记录消除表中的相应记录.我如何制作一个查询来做到这一点?

这是我目前的查询

SELECT `voter`.`ID`, `voter`.`Last_Name`, `voter`.`First_Name`,
       `voter`.`Middle_Name`, `voter`.`Age`, `voter`.`Sex`,
       `voter`.`Party`, `voter`.`Demo`, `voter`.`PV`,
       `household`.`Address`, `household`.`City`, `household`.`Zip`
FROM (`voter`)
JOIN `household` ON `voter`.`House_ID`=`household`.`id`
WHERE `CT` = '5'
AND `Precnum` = 'CTY3'
AND  `Last_Name`  LIKE '%Cumbee%'
AND  `First_Name`  LIKE '%John%'
ORDER BY `Last_Name` ASC
LIMIT 30 
Run Code Online (Sandbox Code Playgroud)

mysql join not-exists

68
推荐指数
3
解决办法
9万
查看次数

了解当涉及3个或更多表时JOIN如何工作.[SQL]

我想知道是否有人可以帮助提高我对SQL中JOIN的理解.[如果它对问题很重要,我正在考虑MS SQL Server.]

取3个表A,B [A由某些A.AId相关]和C [B与某些B.BId相关的C]

如果我撰写查询,例如

SELECT *
FROM A JOIN B 
ON A.AId = B.AId
Run Code Online (Sandbox Code Playgroud)

一切都很好 - 我对它的运作方式很满意.

当表C(或其他一些D,E,......被添加)时会发生什么

在这种情况下

SELECT *
FROM A JOIN B 
  ON A.AId = B.AId
JOIN C ON C.BId = B.BId
Run Code Online (Sandbox Code Playgroud)

什么是C加入? - 是B表(以及B表中的值吗?)或者是C表加入的A + B Join的结果是否是其他临时结果集?

[暗示并非B表中的所有值都必须在基于A,B的连接条件的临时结果集A + B中]

我要问的一个具体(并且相当人为)的例子是因为我试图理解我在下面看到的行为:

Tables 
Account (AccountId, AccountBalanceDate, OpeningBalanceId, ClosingBalanceId)
Balance (BalanceId)
BalanceToken (BalanceId, TokenAmount)

Where:
Account->Opening, and Closing Balances are NULLABLE 
(may have opening balance, closing balance, or none)

Balance->BalanceToken is 1:m - a balance …
Run Code Online (Sandbox Code Playgroud)

sql join

68
推荐指数
2
解决办法
5万
查看次数

为什么.join()不使用函数参数?

为什么这样做(返回"一,二,三"):

var words = ['one', 'two', 'three'];
$("#main").append('<p>' + words.join(", ") + '</p>');
Run Code Online (Sandbox Code Playgroud)

这项工作(返回"列表:111"):

var displayIt = function() {
    return 'the list: ' + arguments[0];
}   
$("#main").append('<p>' + displayIt('111', '222', '333') + '</p>');
Run Code Online (Sandbox Code Playgroud)

但不是这个(返回空白):

var displayIt = function() {
    return 'the list: ' + arguments.join(",");
}   
$("#main").append('<p>' + displayIt('111', '222', '333') + '</p>');
Run Code Online (Sandbox Code Playgroud)

我必须对我的"arguments"变量做什么才能使用.join()?

javascript jquery join

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