首页 > 解决方案 > SQL 查询。给出 sys_language_uid = 1 且没有 sys_language_uid = 2 的所有 pid

问题描述

我正在练习 TYPO3,我想建立一个翻译查询。

我需要所有有sys_language_uid=1但没有翻译的pidsys_language_uid=2

如何使用 SQL 构建它?

SELECT pids FROM pages_language_overlay 
WHERE sys_language_uid=1 
AND (where sys_language_uid=2 doesnt exist)

谢谢

标签: sqltypo3

解决方案


另一种是使用不存在

(通常最快)

SELECT pids 
FROM pages_language_overlay PLO 
WHERE sys_language_uid = 1 
  and not exists (SELECT 1 
                  FROM pages_language_overlay PLO2
                  WHERE PLO2.sys_language_uid = 2 
                    and PLO.pids = PLO2.pids)

假设PIDS是一个PK。

或者使用左连接......当在 uid 2 上找不到 pids 匹配时不是禁食但提供更多数据选项。

SELECT PLO.pids 
FROM pages_language_overlay PLO 
LEFT JOIN pages_language_overlay PLO2
  on PLO.PIDS = PLO2.PIDS
 and PLO2.sys_language_uid = 2
WHERE sys_language_uid = 1 
 and PLO2.PIDS is null

推荐阅读