我正在玩,codingbat.com,
我发现这个问题很容易解决,所以我开始尝试打新手代码高尔夫.
给定非空字符串和int n,返回一个新字符串,其中索引n处的char已被删除.n的值将是原始字符串中char的有效索引(即n将在0..len(str)-1的范围内).
missing_char( '小猫',1)→ 'ktten'
missing_char( '小猫',0)→ '伊顿'
missing_char( '小猫',4)→ 'kittn'
Das代码:
def missing_char(str, n):
return ''.join(' '.join(str).split().remove(str[n]))
Run Code Online (Sandbox Code Playgroud)
奇怪的是,Python不会解释这一点.
为什么不?
我目前在我的数据库中有2个具有相同列的表.里面的数据是不同的,但我需要将它们组合成一个带有查询的表.
我尝试使用连接,但不知怎的,我知道它会覆盖另一个连接.
我循环通过用户页面上的反馈类型评论系统,找到最新的6个帖子.
要显示我想要的帖子,我必须从3个表中获取数据.
我认为如果它只是在一个查询中被拉出来的话,它会减少数据库密集度,但我不确定如何编写它,对JOIN和事情很糟糕.
这是我现有的代码
$sql_result = mysql_query("SELECT * FROM feedback WHERE user='1' ORDER BY date desc LIMIT 6", $db);
while($rs = mysql_fetch_array($sql_result)) {
$sql_result2 = mysql_query("SELECT * FROM members WHERE id= '$rs[author]'", $db);
$rs2 = mysql_fetch_array($sql_result2);
if ($rs2[clan] != 0) {
$sql_result3 = mysql_query("SELECT * FROM clans WHERE id= '$rs2[clan]' LIMIT 1", $db);
$rs3 = mysql_fetch_array($sql_result3);
// write comment
Run Code Online (Sandbox Code Playgroud)
有人能给我一个线索吗?
我有以下查询:
SELECT * FROM
(
SELECT
catalog.*,
images.image
FROM `catalog` as catalog
INNER JOIN `type5` as images ON catalog.id = images.id
WHERE catalog.left_key > (SELECT `left_key` FROM `catalog` WHERE `id`=235) AND catalog.right_key < (SELECT `right_key` FROM `catalog` WHERE `id`=235)
ORDER BY catalog.left_key ASC
) ilv
Run Code Online (Sandbox Code Playgroud)
此查询运行良好,但仅当表type5中的项目ID相同时,它才会选择FROM目录.
例如,在目录中,我有:
id name
5 Hello
7 World
8 Foo
9 Bar
Run Code Online (Sandbox Code Playgroud)
在类型5我有:id图像
5 hello.png
8 foo.png
9 bar.png
Run Code Online (Sandbox Code Playgroud)
它只会选择
5 Hello
8 Foo
9 Bar
Run Code Online (Sandbox Code Playgroud)
即使在type5中没有相同的id,如何编辑我的查询以从目录中选择项目?
我有一个friends
表:id
,fid1
,fid2
表示两个用户(双向)之间的友谊.
和users
表:fid
,name
我想创建一个函数或查询
并返回
我在嵌套JOIN和UNION时遇到了麻烦.我需要UNION确保我获得所有友谊(但也不要重复).这是我到目前为止所得到的:
SELECT fid1 as friends FROM friendships WHERE fid2 = 123456
INNER JOIN users
ON friendships.fid1 = users.fid
UNION ALL (
SELECT fid2 as friends FROM friendships WHERE fid1 = 123456
INNER JOIN users
ON friendships.fid2 = users.fid
)
Run Code Online (Sandbox Code Playgroud)
这是一个错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for …
Run Code Online (Sandbox Code Playgroud) SELECT A.id as ActivityId, A.description, T.id, T.title, COUNT(R.*) as reactionCount
FROM activities
LEFT JOIN activitiesReactions as R ON R.activityId = A.id
LEFT JOIN activitiesTags as T ON A.tagId = T.id
Run Code Online (Sandbox Code Playgroud)
所以基本上我需要一个能够获得所有活动的查询,同时得不到该活动的反应但得到COUNT的反应,这些反应可以在另一个名为activitiesReactions的表中找到,我该怎么做(参见上面的查询我想到的).
所以查询应该返回:
array('activityId' => 3, 'description' => 'doing work', 'reactionCount' => 2)
Run Code Online (Sandbox Code Playgroud)
一个示例行:
Activities table:
id | description
3 doing work
4 checking mail
ActivitiesReactions table:
id | activityId | message
1 3 you never do anywork, so that must be bullshit.
2 3 yes I do alot of work! …
Run Code Online (Sandbox Code Playgroud) 我正在使用SQL Server 2005.
我正在和我的一个朋友一起编写代码,仅举一个例子,我去了左侧的联接.
JOIN t on cast(a.foo as int) = b.foo
Run Code Online (Sandbox Code Playgroud)
他告诉我永远不要这样做,因为我失去了索引的所有性能优势.
你为什么要故意这样做?
我有许多设备在不同的时间记录不同的数据,并希望在一个查询中获取所有数据,按时间排序.我所拥有的各种表格的一个例子:
CREATE TABLE location(
device_id INT, -- REFERENCES device(id)
timestamp DATETIME2 NOT NULL,
position GEOMETRY NOT NULL
)
CREATE TABLE temperature(
device_id INT, -- REFERENCES device(id)
timestamp DATETIME2 NOT NULL,
temp FLOAT NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
我希望有一个单独的查询连接在device_id和timestamp上的表,当时间戳不匹配时,它包含空值.我正在寻找的输出格式的一个例子是:
device_id, timestamp, location, temperature
1, 2011/12/1 10:00:00, (35.1, 139.2), NULL
1, 2011/12/1 10:00:01, NULL, 9.0
1, 2011/12/1 10:00:02, (35.1, 139.2), 9.1
Run Code Online (Sandbox Code Playgroud)
我已经尝试过FULL JOIN但是无法弄清楚如何在没有巨大的CASE语句的情况下执行timestamp列(请记住,虽然我只显示了2个表,但是可以有更多表).
SELECT
location.device_id,
CASE WHEN location.timestamp IS NOT NULL THEN
location.timestamp
ELSE
temperature.timestamp
END as timestamp,
location,
temp
FROM
location
FULL JOIN …
Run Code Online (Sandbox Code Playgroud) 好吧,我有两张桌子:
events
:id
,title
,description
trip_events
:id
,event_id
(指向events
.id
)我需要从名为table的表中选择结果events
.
SELECT *
FROM `events`
Run Code Online (Sandbox Code Playgroud)
就这么简单吧?
我需要实现的是,我需要从中选择结果events
,但排除那些中的行trip_events
(如果events
.id
!= trip_events
.event_id
排除).
这是一个例子:
events
:
id
:5
,id
:6
,id
:7
,id
:8
;trip_events
:
event_id
:6
,event_id
:8
;使用此数据集,仅返回id为5
和的事件6
.
这该怎么做?
我试过这样的:
SELECT *
FROM `events`
JOIN …
Run Code Online (Sandbox Code Playgroud) 我试图根据其父表中的键检索子对象.例如,我有一个Customer类,其中包含Stores表的"store_id"键.如果客户有"store_id"键,我想带回那个Store对象而不是父Customer对象.
编辑:这是一个sql语句显示我想要做什么.
所以SQL语句看起来像这样.
"SELECT storeS.*FROM FROM INNER JOIN store ON customers.store_id = storeS.id WHERE customers.id ='9'"
我知道sql可能是错误的,但这是一种非常简洁的方式来显示它.