Php 在另一个表中具有相同字符串但uiid和位置不同的OrderBy行
我将SQL与简单的SQL查询结合使用,如:Php 在另一个表中具有相同字符串但uiid和位置不同的OrderBy行,php,mysql,symfony,Php,Mysql,Symfony,我将SQL与简单的SQL查询结合使用,如: $query = $em->createQuery("SELECT u FROM User u JOIN u.address a WHERE a.city = 'Berlin'"); $users = $query->getResult(); 我的问题是 我有两张桌子: Table A [UIID name] Table B [UIID] is a reference key of UIID table A 例如
$query = $em->createQuery("SELECT u FROM User u JOIN u.address a WHERE a.city = 'Berlin'");
$users = $query->getResult();
我的问题是
我有两张桌子:
Table A
[UIID name]
Table B
[UIID] is a reference key of UIID table A
例如(为了简化示例,UIID是一个int):
我喜欢这样做:
SELECT UIID NAME
FROM A
GROUP BY UIID,
ORDER BY NAME
但在表B中的元素之前和表A中的元素之后:
2 Alpha
1 Alpha
3 Beta
4 Charlie
5 Delta
6 Delta
我知道UIIDV1和其他版本的时间戳位置之间存在差异。
我无法修改数据库的id,因此我问自己是否有类似于like
的指令,用于在不创建带有id和时间戳的新表的情况下进行修改
附言:
我以前犯过一个错误:
我写过:
SELECT UIID NAME
FROM A
GROUP BY UIID,
ORDER BY UIID
但我想说的是:
SELECT UIID NAME
FROM A
GROUP BY UIID,
ORDER BY NAME
通过表的
左连接
:
SELECT A.UIID, A.name
FROM A LEFT JOIN B
ON B.UIID = A.UIID
ORDER BY B.UIID IS NULL, A.NAME
表达方式:
B.UIID IS NULL
对于false
或true
,计算结果为0
或1
,因此这两个表的所有匹配行都将位于顶部。或与
一起存在
:
SELECT A.UIID, A.name
FROM A
ORDER BY EXISTS (SELECT 1 FROM B WHERE B.UIID = A.UIID) DESC,
A.NAME
请参阅。结果:
通过表的
左连接
:
SELECT A.UIID, A.name
FROM A LEFT JOIN B
ON B.UIID = A.UIID
ORDER BY B.UIID IS NULL, A.NAME
表达方式:
B.UIID IS NULL
对于false
或true
,计算结果为0
或1
,因此这两个表的所有匹配行都将位于顶部。或与
一起存在
:
SELECT A.UIID, A.name
FROM A
ORDER BY EXISTS (SELECT 1 FROM B WHERE B.UIID = A.UIID) DESC,
A.NAME
请参阅。结果:
谢谢,我需要按姓名订购(我在这个问题上犯了一个错误)?按UIID从组中选择UIID名称,按名称订购谢谢,我需要按名称订购(我在问题中犯了一个错误)?按UIID、按名称排序从组中选择UIID名称