gpt4 book ai didi

SQLite 比较两列

转载 作者:行者123 更新时间:2023-12-03 17:24:23 32 4
gpt4 key购买 nike

我正在为我的 Psych 类(class)创建一个数据库,并且我正在为一个个性文件评分。我需要比较两个测试项目,如果它们符合条件,则复制到单独的表中。

示例(伪代码在\之间)Sqlite3

INSERT INTO Scale
SELECT* FROM Questions
WHERE \\if Question 1 IS 'TRUE' AND Question 3 IS 'FALSE' THEN Copy this Question
and its response into the Scale table\\;

我还有大约 100 个其他类似的问题。示例格式如下:
IF FirstQuestion IS value AND SecondQuestion IS value THEN 
Copy both questions into the Scale TABLE.

---------- 第一 react 后编辑!编辑如下----------

这是我的 TestItems 表:
ItemID |      ItemQuestion       | ItemResponse
```````````````````````````````````````````````````
1 | Is the sky blue? | TRUE
2 | Are you a person? | TRUE
3 | 2 Plus 2 Equals Five | FALSE

我想做的事:如果问题 1 是 TRUE 并且问题 3 是 FALSE,那么将两个问题都插入到表 'Scale' 中(就像 TestItems 一样设置)。我试过这个:
INSERT INTO Scale
SELECT * FROM TestItems
WHERE ((ItemID=1) AND (ItemResponse='TRUE'))
AND ((ItemID=3) AND (ItemResponse='FALSE'));

但是:上面的 INSERT 都不复制。
生成的“比例”表应如下所示:
ItemID |      ItemQuestion       | ItemResponse
```````````````````````````````````````````````````
1 | Is the sky blue? | TRUE
3 | 2 Plus 2 Equals Five | FALSE

最佳答案

您的查询没有任何问题。你就在那里:

INSERT INTO Scale
SELECT * FROM Questions
WHERE `Question 1` = 1 AND `Question 3` = 0;

这里 1 和 0 是值(在第一种情况下,true 和 false)。首先,您应该确保有字段 Question 1Question 3在您的 Questions table 。其次, Scale 的列数和数据类型表应该匹配 Questions table 。否则,您将不得不选择性地选择 SELECT 中的字段。询问。

编辑:为了回应您的编辑,我没有看到一个优雅的解决方案。你可以这样做:
INSERT INTO Scale
SELECT * FROM TestItems WHERE ItemID = 1 AND ItemResponse = 'TRUE'
UNION
SELECT * FROM TestItems WHERE ItemID = 3 AND ItemResponse = 'FALSE'
WHERE (SELECT COUNT(*) FROM (
SELECT 1 FROM TestItems WHERE ItemID = 1 AND ItemResponse = 'TRUE'
UNION
SELECT * FROM TestItems WHERE ItemID = 3 AND ItemResponse = 'FALSE'
) AS t) >= 2

您的插入无效,因为 ItemID不能同时是 1 和 3。我的解决方案将所需的记录插入 Scale表,但通过检查计数来验证这两个记录是否存在。此外,您可以 (应该)执行以下操作,因为这可能会稍微更有效(上面的 SQL 是为了清楚地显示正在使用的逻辑):
INSERT INTO Scale
SELECT * FROM TestItems WHERE ItemID = 1 AND ItemResponse = 'TRUE'
UNION
SELECT * FROM TestItems WHERE ItemID = 3 AND ItemResponse = 'FALSE'
WHERE (
SELECT COUNT(*)
FROM TestItems
WHERE ItemID = 1 AND ItemResponse = 'TRUE'
OR ItemID = 3 AND ItemResponse = 'FALSE'
) >= 2

关于SQLite 比较两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13097881/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com